﻿using System;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.IO;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Markup;


namespace ThePresenter.Windows.Data
{
	public class ShapesLibrary : ObservableCollection<Shape>
	{
		#region Fields
		bool _SavingEnabled = false;

		public string ShapesLibraryPath;
		#endregion


		#region Constructors
		/// <summary>
		/// Initializes a new instance of the <see cref="ShapesLibrary"/> class.
		/// </summary>
		public ShapesLibrary()
		{
		}

		/// <summary>
		/// Initializes a new instance of the <see cref="ShapesLibrary"/> class.
		/// </summary>
		/// <param name="shapesLibraryPath">The shapes library path.</param>
		public ShapesLibrary(string shapesLibraryPath)
			: this()
		{
			ShapesLibraryPath = shapesLibraryPath;
		}
		#endregion


		#region Methods
		/// <summary>
		/// Generates the matrix.
		/// </summary>
		/// <param name="m">The number of rows.</param>
		/// <param name="n">The number of columns.</param>
		/// <param name="a">The matrix side size.</param>
		/// <returns>Strokes.</returns>
		static StrokeCollection GenerateMatrix(int m, int n, int a)
		{
			var sc = new StrokeCollection();

			for (int i = 0; i < n; i++)
			{
				for (int j = 0; j < m; j++)
				{
					var sp = new StylusPointCollection(5);

					sp.Add(new StylusPoint(i * a, j * a));
					sp.Add(new StylusPoint((i + 1) * a, j * a));
					sp.Add(new StylusPoint((i + 1) * a, (j + 1) * a));
					sp.Add(new StylusPoint(i * a, (j + 1) * a));
					sp.Add(new StylusPoint(i * a, j * a));

					sc.Add(new Stroke(sp));
				}
			}

			return sc;
		}

		/// <summary>
		/// Raises the <see cref="E:CollectionChanged"/> event.
		/// </summary>
		/// <param name="e">The <see cref="System.Collections.Specialized.NotifyCollectionChangedEventArgs"/> instance containing the event data.</param>
		protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
		{
			if (_SavingEnabled)
				Save();

			base.OnCollectionChanged(e);
		}

		/// <summary>
		/// Loads the <see cref="ThePresenter.Windows.Data.ShapesLibrary"/> from the specified path.
		/// </summary>
		/// <param name="path">The path.</param>
		/// <returns>New instance of <see cref="ThePresenter.Windows.Data.ShapesLibrary"/>.</returns>
		/// <exception cref="System.ArgumentException"/>
		/// <exception cref="System.NotSupportedException"/>
		/// <exception cref="System.ArgumentException"/>
		/// <exception cref="System.IO.FileNotFoundException"/>
		/// <exception cref="System.IO.IOException"/>
		/// <exception cref="System.Security.SecurityException"/>
		/// <exception cref="System.IO.DirectoryNotFoundException"/>
		/// <exception cref="System.UnauthorizedAccessException"/>
		/// <exception cref="System.IO.PathTooLongException"/>
		/// <exception cref="System.ArgumentOutOfRangeException"/>
		/// <exception cref="System.Windows.Markup.XamlParseException"/>
		public static ShapesLibrary Load(string path)
		{
			if (File.Exists(path)) // if shapes file exists
			{
				#region Load shapes from file
				try
				{
					using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read))
					{
						var lib = XamlReader.Load(fs) as ShapesLibrary;

						if (lib != null)
							lib.ShapesLibraryPath = path;

						return lib;
					}
				}
				catch (Exception)
				{
					throw;
					// TODO: informovat ze sa nepodarilo nacitat kniznicu zo suboru
				}
				#endregion				
			}
			else
			{
				#region Manualy add shapes
				return new ShapesLibrary(path)
				{
					new Shape(ANSI.AND, "AND"),
					new Shape(ANSI.NAND, "NAND"),
					new Shape(ANSI.NOT, "NOT"),
					new Shape(ANSI.OR, "OR"),
					new Shape(ANSI.NOR, "NOR"),
					new Shape(ANSI.XOR, "XOR"),
					new Shape(ANSI.XNOR, "XNOR"),
					new Shape(ANSI.DFlipFlop, "D"),
					new Shape(ANSI.Mux2, "Mux2"),
					new Shape(GenerateMatrix(4, 4, 64), "4x4"),
					new Shape(GenerateMatrix(8, 8, 64), "8x8"),
				};
				#endregion
			}
		}

		/// <summary>
		/// Saves this instance.
		/// </summary>
		/// <exception cref="System.ArgumentException"/>
		/// <exception cref="System.NotSupportedException"/>
		/// <exception cref="System.ArgumentException"/>
		/// <exception cref="System.IO.FileNotFoundException"/>
		/// <exception cref="System.IO.IOException"/>
		/// <exception cref="System.Security.SecurityException"/>
		/// <exception cref="System.IO.DirectoryNotFoundException"/>
		/// <exception cref="System.UnauthorizedAccessException"/>
		/// <exception cref="System.IO.PathTooLongException"/>
		/// <exception cref="System.ArgumentOutOfRangeException"/>
		public void Save()
		{
			try
			{
				if (!Path.IsPathRooted(ShapesLibraryPath)) // if not abs path, make it
					ShapesLibraryPath = string.Format("{0}/{1}", App.AppDirectory, ShapesLibraryPath);

				using (var fs = new FileStream(ShapesLibraryPath, FileMode.Create, FileAccess.ReadWrite))
				{
					XamlWriter.Save(this, fs);
				}
			}
			catch (Exception)
			{
				throw;
				// TODO: informovat o tom ze sa nepodarilo ulozit kniznicu do suboru
			}
		}
		#endregion


		#region Classes
		/// <summary>
		/// Specialized class for shapes of the ANSI logic gates.
		/// </summary>
		class ANSI
		{
			#region Properties
			/// <summary>
			/// Gets the ANSI NOT.
			/// </summary>
			/// <value>The ANSI NOT.</value>
			public static StrokeCollection NOT
			{
				get
				{
					var sc = new StrokeCollection() {
						// in1
						new Stroke(new StylusPointCollection() { new StylusPoint(160.81640625, 30.32421875), new StylusPoint(110.7265625, 30.32421875) }),

						// out1
						new Stroke(new StylusPointCollection() { new StylusPoint(52.109375, 30.91015625), new StylusPoint(51.608516693115234, 30.91015625), new StylusPoint(51.1076545715332, 30.91015625), new StylusPoint(50.60679626464844, 30.91015625), new StylusPoint(50.10593795776367, 30.91015625), new StylusPoint(49.605079650878906, 30.91015625), new StylusPoint(49.104217529296875, 30.91015625), new StylusPoint(48.60335922241211, 30.91015625), new StylusPoint(48.102500915527344, 30.91015625), new StylusPoint(47.60163879394531, 30.91015625), new StylusPoint(47.10078048706055, 30.91015625), new StylusPoint(46.59992218017578, 30.91015625), new StylusPoint(46.099063873291016, 30.91015625), new StylusPoint(45.598201751708984, 30.91015625), new StylusPoint(45.09734344482422, 30.91015625), new StylusPoint(44.59648513793945, 30.91015625), new StylusPoint(44.09562683105469, 30.91015625), new StylusPoint(43.594764709472656, 30.91015625), new StylusPoint(43.09390640258789, 30.91015625), new StylusPoint(42.593048095703125, 30.91015625), new StylusPoint(42.092185974121094, 30.91015625), new StylusPoint(41.59132766723633, 30.91015625), new StylusPoint(41.09046936035156, 30.91015625), new StylusPoint(40.58960723876953, 30.91015625), new StylusPoint(40.088748931884766, 30.91015625), new StylusPoint(39.587890625, 30.91015625), new StylusPoint(39.087032318115234, 30.91015625), new StylusPoint(38.58617401123047, 30.91015625), new StylusPoint(38.08531188964844, 30.91015625), new StylusPoint(37.58445358276367, 30.91015625), new StylusPoint(37.083595275878906, 30.91015625), new StylusPoint(36.582733154296875, 30.91015625), new StylusPoint(36.08187484741211, 30.91015625), new StylusPoint(35.581016540527344, 30.91015625), new StylusPoint(35.08015441894531, 30.91015625), new StylusPoint(34.57929611206055, 30.91015625), new StylusPoint(34.07843780517578, 30.91015625), new StylusPoint(33.57757568359375, 30.91015625), new StylusPoint(33.07672119140625, 30.91015625), new StylusPoint(32.57585906982422, 30.91015625), new StylusPoint(32.07500076293945, 30.91015625), new StylusPoint(31.574140548706055, 30.91015625), new StylusPoint(31.073280334472656, 30.91015625), new StylusPoint(30.57242202758789, 30.91015625), new StylusPoint(30.071561813354492, 30.91015625), new StylusPoint(29.570703506469727, 30.91015625), new StylusPoint(29.069843292236328, 30.91015625), new StylusPoint(28.568984985351562, 30.91015625), new StylusPoint(28.068124771118164, 30.91015625), new StylusPoint(27.5672664642334, 30.91015625), new StylusPoint(27.06640625, 30.91015625), new StylusPoint(26.5655460357666, 30.91015625), new StylusPoint(26.064687728881836, 30.91015625), new StylusPoint(25.563827514648438, 30.91015625), new StylusPoint(25.062969207763672, 30.91015625), new StylusPoint(24.562108993530273, 30.91015625), new StylusPoint(24.061250686645508, 30.91015625), new StylusPoint(23.56039047241211, 30.91015625), new StylusPoint(23.059532165527344, 30.91015625), new StylusPoint(22.558671951293945, 30.91015625), new StylusPoint(22.057811737060547, 30.91015625), new StylusPoint(21.55695343017578, 30.91015625), new StylusPoint(21.056093215942383, 30.91015625), new StylusPoint(20.555234909057617, 30.91015625), new StylusPoint(20.05437469482422, 30.91015625), new StylusPoint(19.553516387939453, 30.91015625), new StylusPoint(19.052658081054688, 30.91015625), new StylusPoint(18.551795959472656, 30.91015625), new StylusPoint(18.05093765258789, 30.91015625), new StylusPoint(17.550079345703125, 30.91015625), new StylusPoint(17.049217224121094, 30.91015625), new StylusPoint(16.548358917236328, 30.91015625), new StylusPoint(16.047500610351562, 30.91015625), new StylusPoint(15.546642303466797, 30.91015625), new StylusPoint(15.045780181884766, 30.91015625), new StylusPoint(14.544921875, 30.91015625), new StylusPoint(14.044063568115234, 30.91015625), new StylusPoint(13.543201446533203, 30.91015625), new StylusPoint(13.042343139648438, 30.91015625), new StylusPoint(12.541484832763672, 30.91015625), new StylusPoint(12.040626525878906, 30.91015625), new StylusPoint(11.539764404296875, 30.91015625), new StylusPoint(11.03890609741211, 30.91015625), new StylusPoint(10.538047790527344, 30.91015625), new StylusPoint(10.037185668945312, 30.91015625), new StylusPoint(9.536327362060547, 30.91015625), new StylusPoint(9.035469055175781, 30.91015625), new StylusPoint(8.534610748291016, 30.91015625), new StylusPoint(8.033748626708984, 30.91015625), new StylusPoint(7.532890319824219, 30.91015625), new StylusPoint(7.032032012939453, 30.91015625), new StylusPoint(6.5311737060546875, 30.91015625), new StylusPoint(6.030311584472656, 30.91015625), new StylusPoint(5.529453277587891, 30.91015625), new StylusPoint(5.028594970703125, 30.91015625), new StylusPoint(4.527732849121094, 30.91015625), new StylusPoint(4.026874542236328, 30.91015625), new StylusPoint(3.5260162353515625, 30.91015625), new StylusPoint(3.025157928466797, 30.91015625), new StylusPoint(2.5242958068847656, 30.91015625), new StylusPoint(2.0234375, 30.91015625) }),

						// gate
						new Stroke(new StylusPointCollection() { new StylusPoint(101.6015625, 30.99609375), new StylusPoint(100.0953369140625, 31.865751266479492), new StylusPoint(98.589111328125, 32.735408782958984), new StylusPoint(97.08287811279297, 33.60506820678711), new StylusPoint(95.57665252685547, 34.47472381591797), new StylusPoint(94.07042694091797, 35.344383239746094), new StylusPoint(92.56420135498047, 36.21403884887695), new StylusPoint(91.05797576904297, 37.08369827270508), new StylusPoint(89.55175018310547, 37.95335388183594), new StylusPoint(88.04551696777344, 38.82301330566406), new StylusPoint(86.53929138183594, 39.69267272949219), new StylusPoint(85.03306579589844, 40.56232833862305), new StylusPoint(83.52684020996094, 41.43198776245117), new StylusPoint(82.02061462402344, 42.30164337158203), new StylusPoint(80.51438903808594, 43.171302795410156), new StylusPoint(79.0081558227539, 44.040958404541016), new StylusPoint(77.5019302368164, 44.91061782836914), new StylusPoint(75.9957046508789, 45.7802734375), new StylusPoint(74.4894790649414, 46.649932861328125), new StylusPoint(72.9832534790039, 47.519588470458984), new StylusPoint(71.47702026367188, 48.38924789428711), new StylusPoint(69.97079467773438, 49.25890350341797), new StylusPoint(68.46456909179688, 50.128562927246094), new StylusPoint(66.95834350585938, 50.99822235107422), new StylusPoint(65.45211029052734, 51.86787796020508), new StylusPoint(63.94588851928711, 52.7375373840332), new StylusPoint(62.43966293334961, 53.60719299316406), new StylusPoint(60.933433532714844, 54.47685241699219), new StylusPoint(59.427207946777344, 55.34650802612305), new StylusPoint(57.92097854614258, 56.21616744995117), new StylusPoint(56.414756774902344, 57.08582305908203), new StylusPoint(54.90852737426758, 57.955482482910156), new StylusPoint(53.40230178833008, 58.825138092041016), new StylusPoint(51.89607238769531, 59.69479751586914), new StylusPoint(51.39453125, 58.82425308227539), new StylusPoint(51.39453125, 57.084991455078125), new StylusPoint(51.39453125, 55.345733642578125), new StylusPoint(51.39453125, 53.60647201538086), new StylusPoint(51.39453125, 51.86721420288086), new StylusPoint(51.39453125, 50.12795639038086), new StylusPoint(51.39453125, 48.38869094848633), new StylusPoint(51.39453125, 46.64943313598633), new StylusPoint(51.39453125, 44.91017532348633), new StylusPoint(51.39453125, 43.17091751098633), new StylusPoint(51.39453125, 41.4316520690918), new StylusPoint(51.39453125, 39.6923942565918), new StylusPoint(51.39453125, 37.9531364440918), new StylusPoint(51.39453125, 36.2138786315918), new StylusPoint(51.39453125, 34.474613189697266), new StylusPoint(51.39453125, 32.735355377197266), new StylusPoint(51.39453125, 30.996097564697266), new StylusPoint(51.39453125, 29.256839752197266), new StylusPoint(51.39453125, 27.517581939697266), new StylusPoint(51.39453125, 25.778316497802734), new StylusPoint(51.39453125, 24.039058685302734), new StylusPoint(51.39453125, 22.299800872802734), new StylusPoint(51.39453125, 20.560543060302734), new StylusPoint(51.39453125, 18.821277618408203), new StylusPoint(51.39453125, 17.082019805908203), new StylusPoint(51.39453125, 15.342761993408203), new StylusPoint(51.39453125, 13.603504180908203), new StylusPoint(51.39453125, 11.864238739013672), new StylusPoint(51.39453125, 10.124980926513672), new StylusPoint(51.39453125, 8.385723114013672), new StylusPoint(51.39453125, 6.646465301513672), new StylusPoint(51.39453125, 4.907199859619141), new StylusPoint(51.39453125, 3.1679420471191406), new StylusPoint(51.89606475830078, 2.2973859310150146), new StylusPoint(53.40229034423828, 3.1670427322387695), new StylusPoint(54.90852355957031, 4.036703109741211), new StylusPoint(56.41474914550781, 4.906360149383545), new StylusPoint(57.92097473144531, 5.776016712188721), new StylusPoint(59.42720031738281, 6.645673751831055), new StylusPoint(60.93342971801758, 7.515334129333496), new StylusPoint(62.43965530395508, 8.384990692138672), new StylusPoint(63.94588088989258, 9.254647254943848), new StylusPoint(65.45211029052734, 10.12430477142334), new StylusPoint(66.95833587646484, 10.993961334228516), new StylusPoint(68.46456146240234, 11.863617897033691), new StylusPoint(69.97078704833984, 12.733274459838867), new StylusPoint(71.47702026367188, 13.60293960571289), new StylusPoint(72.98324584960938, 14.472596168518066), new StylusPoint(74.48947143554688, 15.342252731323242), new StylusPoint(75.99569702148438, 16.211910247802734), new StylusPoint(77.50192260742188, 17.081565856933594), new StylusPoint(79.00814819335938, 17.951223373413086), new StylusPoint(80.51437377929688, 18.820878982543945), new StylusPoint(82.02059936523438, 19.690536499023438), new StylusPoint(83.52684020996094, 20.56020164489746), new StylusPoint(85.03306579589844, 21.42985725402832), new StylusPoint(86.53929138183594, 22.299514770507812), new StylusPoint(88.04551696777344, 23.169172286987305), new StylusPoint(89.55174255371094, 24.038827896118164), new StylusPoint(91.05796813964844, 24.908485412597656), new StylusPoint(92.56419372558594, 25.778141021728516), new StylusPoint(94.07041931152344, 26.647798538208008), new StylusPoint(95.57665252685547, 27.51746368408203), new StylusPoint(97.08287811279297, 28.38711929321289), new StylusPoint(98.58910369873047, 29.256776809692383), new StylusPoint(100.09532928466797, 30.126432418823242), new StylusPoint(101.60155487060547, 30.996089935302734) }),

						// circle
						new Stroke(new StylusPointCollection() { new StylusPoint(110.81640625, 30.71875), new StylusPoint(110.77973175048828, 30.99928092956543), new StylusPoint(110.7430648803711, 31.279813766479492), new StylusPoint(110.70639038085938, 31.560344696044922), new StylusPoint(110.66972351074219, 31.840877532958984), new StylusPoint(110.58296966552734, 32.10840606689453), new StylusPoint(110.4785385131836, 32.37134552001953), new StylusPoint(110.37410736083984, 32.63428497314453), new StylusPoint(110.26968383789062, 32.89722442626953), new StylusPoint(110.13017272949219, 33.14065933227539), new StylusPoint(109.96192932128906, 33.36811828613281), new StylusPoint(109.79368591308594, 33.59557342529297), new StylusPoint(109.62544250488281, 33.82303237915039), new StylusPoint(109.43667602539062, 34.03078842163086), new StylusPoint(109.21630096435547, 34.20820999145508), new StylusPoint(108.99592590332031, 34.38562774658203), new StylusPoint(108.77555084228516, 34.56304931640625), new StylusPoint(108.54673767089844, 34.72636795043945), new StylusPoint(108.2862548828125, 34.836788177490234), new StylusPoint(108.02577209472656, 34.947208404541016), new StylusPoint(107.76529693603516, 35.0576286315918), new StylusPoint(107.5033950805664, 35.16291046142578), new StylusPoint(107.22311401367188, 35.201438903808594), new StylusPoint(106.94283294677734, 35.23996353149414), new StylusPoint(106.66255187988281, 35.27849197387695), new StylusPoint(106.38227081298828, 35.3157958984375), new StylusPoint(106.10196685791016, 35.277400970458984), new StylusPoint(105.82166290283203, 35.2390022277832), new StylusPoint(105.54136657714844, 35.20060348510742), new StylusPoint(105.26106262207031, 35.162208557128906), new StylusPoint(104.99966430664062, 35.0553092956543), new StylusPoint(104.73932647705078, 34.944549560546875), new StylusPoint(104.47898864746094, 34.83378982543945), new StylusPoint(104.21865844726562, 34.723026275634766), new StylusPoint(103.9905014038086, 34.55833053588867), new StylusPoint(103.76940155029297, 34.38182067871094), new StylusPoint(103.54829406738281, 34.2053108215332), new StylusPoint(103.32719421386719, 34.0287971496582), new StylusPoint(103.13899993896484, 33.82065200805664), new StylusPoint(102.97136688232422, 33.59274673461914), new StylusPoint(102.8037338256836, 33.364837646484375), new StylusPoint(102.63610076904297, 33.136932373046875), new StylusPoint(102.49765014648438, 32.89278793334961), new StylusPoint(102.39241790771484, 32.63016891479492), new StylusPoint(102.28718566894531, 32.367549896240234), new StylusPoint(102.18195343017578, 32.10493087768555), new StylusPoint(102.09619140625, 31.837326049804688), new StylusPoint(102.06222534179688, 31.556453704833984), new StylusPoint(102.02826690673828, 31.27558135986328), new StylusPoint(101.99430847167969, 30.994707107543945), new StylusPoint(101.9615249633789, 30.713834762573242), new StylusPoint(101.99526977539062, 30.432937622070312), new StylusPoint(102.02901458740234, 30.152036666870117), new StylusPoint(102.06275939941406, 29.871139526367188), new StylusPoint(102.09650421142578, 29.590240478515625), new StylusPoint(102.1829833984375, 29.322860717773438), new StylusPoint(102.28854370117188, 29.06037139892578), new StylusPoint(102.39409637451172, 28.797882080078125), new StylusPoint(102.4996566772461, 28.53539276123047), new StylusPoint(102.63926696777344, 28.291833877563477), new StylusPoint(102.80645751953125, 28.063596725463867), new StylusPoint(102.97364044189453, 27.83536148071289), new StylusPoint(103.14082336425781, 27.60712432861328), new StylusPoint(103.32959747314453, 27.399702072143555), new StylusPoint(103.55160522460938, 27.224334716796875), new StylusPoint(103.77362060546875, 27.048965454101562), new StylusPoint(103.9956283569336, 26.87359619140625), new StylusPoint(104.22539520263672, 26.71121597290039), new StylusPoint(104.48504638671875, 26.598857879638672), new StylusPoint(104.74469757080078, 26.486499786376953), new StylusPoint(105.00434875488281, 26.374141693115234), new StylusPoint(105.26543426513672, 26.266948699951172), new StylusPoint(105.54586029052734, 26.229494094848633), new StylusPoint(105.82628631591797, 26.192039489746094), new StylusPoint(106.1067123413086, 26.154584884643555), new StylusPoint(106.38714599609375, 26.117244720458984), new StylusPoint(106.66755676269531, 26.15482521057129), new StylusPoint(106.94796752929688, 26.192405700683594), new StylusPoint(107.22837829589844, 26.2299861907959), new StylusPoint(107.5087890625, 26.267568588256836), new StylusPoint(107.76966094970703, 26.375694274902344), new StylusPoint(108.02946472167969, 26.487709045410156), new StylusPoint(108.28926086425781, 26.59972381591797), new StylusPoint(108.54906463623047, 26.71173858642578), new StylusPoint(108.77812957763672, 26.875030517578125), new StylusPoint(108.99942016601562, 27.051311492919922), new StylusPoint(109.220703125, 27.227590560913086), new StylusPoint(109.4419937133789, 27.40386962890625), new StylusPoint(109.62947845458984, 27.612701416015625), new StylusPoint(109.79727172851562, 27.840490341186523), new StylusPoint(109.9650650024414, 28.06827735900879), new StylusPoint(110.13285827636719, 28.29606819152832), new StylusPoint(110.27134704589844, 28.540136337280273), new StylusPoint(110.3760986328125, 28.802947998046875), new StylusPoint(110.48085021972656, 29.065759658813477), new StylusPoint(110.58560180664062, 29.32857322692871), new StylusPoint(110.67066192626953, 29.596500396728516), new StylusPoint(110.70709991455078, 29.87706184387207), new StylusPoint(110.7435302734375, 30.157625198364258), new StylusPoint(110.77996826171875, 30.438186645507812) })
					};

					return sc;
				}
			}

			/// <summary>
			/// Gets the ANSI AND.
			/// </summary>
			/// <value>The ANSI AND.</value>
			public static StrokeCollection AND
			{
				get
				{
					var sc = new StrokeCollection() {
						// in1
						new Stroke(new StylusPointCollection() { new StylusPoint(52.88671875, 13.82421875), new StylusPoint(52.385860443115234, 13.82421875), new StylusPoint(51.8849983215332, 13.82421875), new StylusPoint(51.38414001464844, 13.82421875), new StylusPoint(50.88328170776367, 13.82421875), new StylusPoint(50.382423400878906, 13.82421875), new StylusPoint(49.881561279296875, 13.82421875), new StylusPoint(49.38070297241211, 13.82421875), new StylusPoint(48.879844665527344, 13.82421875), new StylusPoint(48.37898254394531, 13.82421875), new StylusPoint(47.87812423706055, 13.82421875), new StylusPoint(47.37726593017578, 13.82421875), new StylusPoint(46.876407623291016, 13.82421875), new StylusPoint(46.375545501708984, 13.82421875), new StylusPoint(45.87468719482422, 13.82421875), new StylusPoint(45.37382888793945, 13.82421875), new StylusPoint(44.87297058105469, 13.82421875), new StylusPoint(44.372108459472656, 13.82421875), new StylusPoint(43.87125015258789, 13.82421875), new StylusPoint(43.370391845703125, 13.82421875), new StylusPoint(42.869529724121094, 13.82421875), new StylusPoint(42.36867141723633, 13.82421875), new StylusPoint(41.86781311035156, 13.82421875), new StylusPoint(41.36695098876953, 13.82421875), new StylusPoint(40.866092681884766, 13.82421875), new StylusPoint(40.365234375, 13.82421875), new StylusPoint(39.864376068115234, 13.82421875), new StylusPoint(39.36351776123047, 13.82421875), new StylusPoint(38.86265563964844, 13.82421875), new StylusPoint(38.36179733276367, 13.82421875), new StylusPoint(37.860939025878906, 13.82421875), new StylusPoint(37.360076904296875, 13.82421875), new StylusPoint(36.85921859741211, 13.82421875), new StylusPoint(36.358360290527344, 13.82421875), new StylusPoint(35.85749816894531, 13.82421875), new StylusPoint(35.35663986206055, 13.82421875), new StylusPoint(34.85578155517578, 13.82421875), new StylusPoint(34.35491943359375, 13.82421875), new StylusPoint(33.85406494140625, 13.82421875), new StylusPoint(33.35320281982422, 13.82421875), new StylusPoint(32.85234451293945, 13.82421875), new StylusPoint(32.35148620605469, 13.82421875), new StylusPoint(31.850624084472656, 13.82421875), new StylusPoint(31.34976577758789, 13.82421875), new StylusPoint(30.848905563354492, 13.82421875), new StylusPoint(30.348047256469727, 13.82421875), new StylusPoint(29.847187042236328, 13.82421875), new StylusPoint(29.346328735351562, 13.82421875), new StylusPoint(28.845468521118164, 13.82421875), new StylusPoint(28.3446102142334, 13.82421875), new StylusPoint(27.84375, 13.82421875), new StylusPoint(27.3428897857666, 13.82421875), new StylusPoint(26.842031478881836, 13.82421875), new StylusPoint(26.341171264648438, 13.82421875), new StylusPoint(25.840312957763672, 13.82421875), new StylusPoint(25.339452743530273, 13.82421875), new StylusPoint(24.838594436645508, 13.82421875), new StylusPoint(24.33773422241211, 13.82421875), new StylusPoint(23.836875915527344, 13.82421875), new StylusPoint(23.336015701293945, 13.82421875), new StylusPoint(22.835155487060547, 13.82421875), new StylusPoint(22.33429718017578, 13.82421875), new StylusPoint(21.833436965942383, 13.82421875), new StylusPoint(21.332578659057617, 13.82421875), new StylusPoint(20.83171844482422, 13.82421875), new StylusPoint(20.330860137939453, 13.82421875), new StylusPoint(19.830001831054688, 13.82421875), new StylusPoint(19.329139709472656, 13.82421875), new StylusPoint(18.82828140258789, 13.82421875), new StylusPoint(18.327423095703125, 13.82421875), new StylusPoint(17.826560974121094, 13.82421875), new StylusPoint(17.325702667236328, 13.82421875), new StylusPoint(16.824844360351562, 13.82421875), new StylusPoint(16.323986053466797, 13.82421875), new StylusPoint(15.823123931884766, 13.82421875), new StylusPoint(15.322265625, 13.82421875), new StylusPoint(14.821407318115234, 13.82421875), new StylusPoint(14.320545196533203, 13.82421875), new StylusPoint(13.819686889648438, 13.82421875), new StylusPoint(13.318828582763672, 13.82421875), new StylusPoint(12.817970275878906, 13.82421875), new StylusPoint(12.317108154296875, 13.82421875), new StylusPoint(11.81624984741211, 13.82421875), new StylusPoint(11.315391540527344, 13.82421875), new StylusPoint(10.814529418945312, 13.82421875), new StylusPoint(10.313671112060547, 13.82421875), new StylusPoint(9.812812805175781, 13.82421875), new StylusPoint(9.311954498291016, 13.82421875), new StylusPoint(8.811092376708984, 13.82421875), new StylusPoint(8.310234069824219, 13.82421875), new StylusPoint(7.809375762939453, 13.82421875), new StylusPoint(7.3085174560546875, 13.82421875), new StylusPoint(6.807655334472656, 13.82421875), new StylusPoint(6.306797027587891, 13.82421875), new StylusPoint(5.805938720703125, 13.82421875), new StylusPoint(5.305076599121094, 13.82421875), new StylusPoint(4.804218292236328, 13.82421875), new StylusPoint(4.3033599853515625, 13.82421875), new StylusPoint(3.802501678466797, 13.82421875), new StylusPoint(3.3016395568847656, 13.82421875), new StylusPoint(2.80078125, 13.82421875) }),

						// in2
						new Stroke(new StylusPointCollection() { new StylusPoint(52.88671875, 48.14453125), new StylusPoint(52.385860443115234, 48.14453125), new StylusPoint(51.8849983215332, 48.14453125), new StylusPoint(51.38414001464844, 48.14453125), new StylusPoint(50.88328170776367, 48.14453125), new StylusPoint(50.382423400878906, 48.14453125), new StylusPoint(49.881561279296875, 48.14453125), new StylusPoint(49.38070297241211, 48.14453125), new StylusPoint(48.879844665527344, 48.14453125), new StylusPoint(48.37898254394531, 48.14453125), new StylusPoint(47.87812423706055, 48.14453125), new StylusPoint(47.37726593017578, 48.14453125), new StylusPoint(46.876407623291016, 48.14453125), new StylusPoint(46.375545501708984, 48.14453125), new StylusPoint(45.87468719482422, 48.14453125), new StylusPoint(45.37382888793945, 48.14453125), new StylusPoint(44.87297058105469, 48.14453125), new StylusPoint(44.372108459472656, 48.14453125), new StylusPoint(43.87125015258789, 48.14453125), new StylusPoint(43.370391845703125, 48.14453125), new StylusPoint(42.869529724121094, 48.14453125), new StylusPoint(42.36867141723633, 48.14453125), new StylusPoint(41.86781311035156, 48.14453125), new StylusPoint(41.36695098876953, 48.14453125), new StylusPoint(40.866092681884766, 48.14453125), new StylusPoint(40.365234375, 48.14453125), new StylusPoint(39.864376068115234, 48.14453125), new StylusPoint(39.36351776123047, 48.14453125), new StylusPoint(38.86265563964844, 48.14453125), new StylusPoint(38.36179733276367, 48.14453125), new StylusPoint(37.860939025878906, 48.14453125), new StylusPoint(37.360076904296875, 48.14453125), new StylusPoint(36.85921859741211, 48.14453125), new StylusPoint(36.358360290527344, 48.14453125), new StylusPoint(35.85749816894531, 48.14453125), new StylusPoint(35.35663986206055, 48.14453125), new StylusPoint(34.85578155517578, 48.14453125), new StylusPoint(34.35491943359375, 48.14453125), new StylusPoint(33.85406494140625, 48.14453125), new StylusPoint(33.35320281982422, 48.14453125), new StylusPoint(32.85234451293945, 48.14453125), new StylusPoint(32.35148620605469, 48.14453125), new StylusPoint(31.850624084472656, 48.14453125), new StylusPoint(31.34976577758789, 48.14453125), new StylusPoint(30.848905563354492, 48.14453125), new StylusPoint(30.348047256469727, 48.14453125), new StylusPoint(29.847187042236328, 48.14453125), new StylusPoint(29.346328735351562, 48.14453125), new StylusPoint(28.845468521118164, 48.14453125), new StylusPoint(28.3446102142334, 48.14453125), new StylusPoint(27.84375, 48.14453125), new StylusPoint(27.3428897857666, 48.14453125), new StylusPoint(26.842031478881836, 48.14453125), new StylusPoint(26.341171264648438, 48.14453125), new StylusPoint(25.840312957763672, 48.14453125), new StylusPoint(25.339452743530273, 48.14453125), new StylusPoint(24.838594436645508, 48.14453125), new StylusPoint(24.33773422241211, 48.14453125), new StylusPoint(23.836875915527344, 48.14453125), new StylusPoint(23.336015701293945, 48.14453125), new StylusPoint(22.835155487060547, 48.14453125), new StylusPoint(22.33429718017578, 48.14453125), new StylusPoint(21.833436965942383, 48.14453125), new StylusPoint(21.332578659057617, 48.14453125), new StylusPoint(20.83171844482422, 48.14453125), new StylusPoint(20.330860137939453, 48.14453125), new StylusPoint(19.830001831054688, 48.14453125), new StylusPoint(19.329139709472656, 48.14453125), new StylusPoint(18.82828140258789, 48.14453125), new StylusPoint(18.327423095703125, 48.14453125), new StylusPoint(17.826560974121094, 48.14453125), new StylusPoint(17.325702667236328, 48.14453125), new StylusPoint(16.824844360351562, 48.14453125), new StylusPoint(16.323986053466797, 48.14453125), new StylusPoint(15.823123931884766, 48.14453125), new StylusPoint(15.322265625, 48.14453125), new StylusPoint(14.821407318115234, 48.14453125), new StylusPoint(14.320545196533203, 48.14453125), new StylusPoint(13.819686889648438, 48.14453125), new StylusPoint(13.318828582763672, 48.14453125), new StylusPoint(12.817970275878906, 48.14453125), new StylusPoint(12.317108154296875, 48.14453125), new StylusPoint(11.81624984741211, 48.14453125), new StylusPoint(11.315391540527344, 48.14453125), new StylusPoint(10.814529418945312, 48.14453125), new StylusPoint(10.313671112060547, 48.14453125), new StylusPoint(9.812812805175781, 48.14453125), new StylusPoint(9.311954498291016, 48.14453125), new StylusPoint(8.811092376708984, 48.14453125), new StylusPoint(8.310234069824219, 48.14453125), new StylusPoint(7.809375762939453, 48.14453125), new StylusPoint(7.3085174560546875, 48.14453125), new StylusPoint(6.807655334472656, 48.14453125), new StylusPoint(6.306797027587891, 48.14453125), new StylusPoint(5.805938720703125, 48.14453125), new StylusPoint(5.305076599121094, 48.14453125), new StylusPoint(4.804218292236328, 48.14453125), new StylusPoint(4.3033599853515625, 48.14453125), new StylusPoint(3.802501678466797, 48.14453125), new StylusPoint(3.3016395568847656, 48.14453125), new StylusPoint(2.80078125, 48.14453125) }),

						// gate
						new Stroke(new StylusPointCollection() { new StylusPoint(176.01953125, 31.359375), new StylusPoint(175.5186767578125, 31.359375), new StylusPoint(175.01780700683594, 31.359375), new StylusPoint(174.51695251464844, 31.359375), new StylusPoint(174.01609802246094, 31.359375), new StylusPoint(173.51522827148438, 31.359375), new StylusPoint(173.01437377929688, 31.359375), new StylusPoint(172.51351928710938, 31.359375), new StylusPoint(172.0126495361328, 31.359375), new StylusPoint(171.5117950439453, 31.359375), new StylusPoint(171.0109405517578, 31.359375), new StylusPoint(170.51007080078125, 31.359375), new StylusPoint(170.00921630859375, 31.359375), new StylusPoint(169.50836181640625, 31.359375), new StylusPoint(169.00750732421875, 31.359375), new StylusPoint(168.5066375732422, 31.359375), new StylusPoint(168.0057830810547, 31.359375), new StylusPoint(167.5049285888672, 31.359375), new StylusPoint(167.00405883789062, 31.359375), new StylusPoint(166.50320434570312, 31.359375), new StylusPoint(166.00234985351562, 31.359375), new StylusPoint(165.50148010253906, 31.359375), new StylusPoint(165.00062561035156, 31.359375), new StylusPoint(164.49977111816406, 31.359375), new StylusPoint(163.9989013671875, 31.359375), new StylusPoint(163.498046875, 31.359375), new StylusPoint(162.9971923828125, 31.359375), new StylusPoint(162.49632263183594, 31.359375), new StylusPoint(161.99546813964844, 31.359375), new StylusPoint(161.49461364746094, 31.359375), new StylusPoint(160.99374389648438, 31.359375), new StylusPoint(160.49288940429688, 31.359375), new StylusPoint(159.99203491210938, 31.359375), new StylusPoint(159.49118041992188, 31.359375), new StylusPoint(158.9903106689453, 31.359375), new StylusPoint(158.4894561767578, 31.359375), new StylusPoint(157.98858642578125, 31.359375), new StylusPoint(157.48773193359375, 31.359375), new StylusPoint(156.98687744140625, 31.359375), new StylusPoint(156.48602294921875, 31.359375), new StylusPoint(155.9851531982422, 31.359375), new StylusPoint(155.4842987060547, 31.359375), new StylusPoint(154.98342895507812, 31.359375), new StylusPoint(154.48257446289062, 31.359375), new StylusPoint(153.98171997070312, 31.359375), new StylusPoint(153.48086547851562, 31.359375), new StylusPoint(152.97999572753906, 31.359375), new StylusPoint(152.47914123535156, 31.359375), new StylusPoint(151.97828674316406, 31.359375), new StylusPoint(151.4774169921875, 31.359375), new StylusPoint(150.9765625, 31.359375), new StylusPoint(150.4757080078125, 31.359375), new StylusPoint(149.97483825683594, 31.359375), new StylusPoint(149.47398376464844, 31.359375), new StylusPoint(148.97312927246094, 31.359375), new StylusPoint(148.47225952148438, 31.359375), new StylusPoint(147.97140502929688, 31.359375), new StylusPoint(147.47055053710938, 31.359375), new StylusPoint(146.96969604492188, 31.359375), new StylusPoint(146.4688262939453, 31.359375), new StylusPoint(145.9679718017578, 31.359375), new StylusPoint(145.46710205078125, 31.359375), new StylusPoint(144.96624755859375, 31.359375), new StylusPoint(144.46539306640625, 31.359375), new StylusPoint(143.96453857421875, 31.359375), new StylusPoint(143.4636688232422, 31.359375), new StylusPoint(142.9628143310547, 31.359375), new StylusPoint(142.46194458007812, 31.359375), new StylusPoint(141.96109008789062, 31.359375), new StylusPoint(141.46023559570312, 31.359375), new StylusPoint(140.95938110351562, 31.359375), new StylusPoint(140.45851135253906, 31.359375), new StylusPoint(139.95765686035156, 31.359375), new StylusPoint(139.45680236816406, 31.359375), new StylusPoint(138.9559326171875, 31.359375), new StylusPoint(138.455078125, 31.359375), new StylusPoint(137.9542236328125, 31.359375), new StylusPoint(137.45335388183594, 31.359375), new StylusPoint(136.95249938964844, 31.359375), new StylusPoint(136.45164489746094, 31.359375), new StylusPoint(135.95077514648438, 31.359375), new StylusPoint(135.44992065429688, 31.359375), new StylusPoint(134.94906616210938, 31.359375), new StylusPoint(134.44821166992188, 31.359375), new StylusPoint(133.9473419189453, 31.359375), new StylusPoint(133.4464874267578, 31.359375), new StylusPoint(132.94561767578125, 31.359375), new StylusPoint(132.44476318359375, 31.359375), new StylusPoint(131.94390869140625, 31.359375), new StylusPoint(131.44305419921875, 31.359375), new StylusPoint(130.9421844482422, 31.359375), new StylusPoint(130.4413299560547, 31.359375), new StylusPoint(129.94046020507812, 31.359375), new StylusPoint(129.43960571289062, 31.359375), new StylusPoint(128.93875122070312, 31.359375), new StylusPoint(128.43789672851562, 31.359375), new StylusPoint(127.93702697753906, 31.359375), new StylusPoint(127.43617248535156, 31.359375), new StylusPoint(126.93531799316406, 31.359375), new StylusPoint(126.4344482421875, 31.359375), new StylusPoint(125.93359375, 31.359375) }),

						// out1
						new Stroke(new StylusPointCollection() { new StylusPoint(53.12109375, 1.2265625), new StylusPoint(55.54386901855469, 1.223914623260498), new StylusPoint(57.96664047241211, 1.2212668657302856), new StylusPoint(60.3894157409668, 1.2186189889907837), new StylusPoint(62.812191009521484, 1.2159711122512817), new StylusPoint(65.2349624633789, 1.2133233547210693), new StylusPoint(67.6577377319336, 1.2106754779815674), new StylusPoint(70.08051300048828, 1.2080276012420654), new StylusPoint(72.50328826904297, 1.2053797245025635), new StylusPoint(74.92606353759766, 1.202731966972351), new StylusPoint(77.34883117675781, 1.2000840902328491), new StylusPoint(79.771484375, 1.2190886735916138), new StylusPoint(82.19408416748047, 1.2486047744750977), new StylusPoint(84.6166763305664, 1.278120994567871), new StylusPoint(87.03927612304688, 1.3076372146606445), new StylusPoint(89.46186828613281, 1.3371533155441284), new StylusPoint(91.88333892822266, 1.4065346717834473), new StylusPoint(94.3037338256836, 1.513939619064331), new StylusPoint(96.72412872314453, 1.6213445663452148), new StylusPoint(99.14451599121094, 1.7287495136260986), new StylusPoint(101.56491088867188, 1.8361544609069824), new StylusPoint(103.97152709960938, 2.0623602867126465), new StylusPoint(106.34166717529297, 2.5590460300445557), new StylusPoint(108.66554260253906, 3.2375547885894775), new StylusPoint(110.90768432617188, 4.148351669311523), new StylusPoint(113.02967071533203, 5.3132219314575195), new StylusPoint(114.9759292602539, 6.752613067626953), new StylusPoint(116.81112670898438, 8.334356307983398), new StylusPoint(118.51705169677734, 10.047248840332031), new StylusPoint(120.10029602050781, 11.87857723236084), new StylusPoint(121.446044921875, 13.893221855163574), new StylusPoint(122.62703704833984, 16.00347137451172), new StylusPoint(123.6700210571289, 18.1879825592041), new StylusPoint(124.49439239501953, 20.466196060180664), new StylusPoint(125.15440368652344, 22.79416847229004), new StylusPoint(125.6889877319336, 25.155437469482422), new StylusPoint(126.0342025756836, 27.553491592407227), new StylusPoint(126.22093963623047, 29.966842651367188), new StylusPoint(126.28960418701172, 32.38689422607422), new StylusPoint(126.19244384765625, 34.80772018432617), new StylusPoint(125.94682312011719, 37.216773986816406), new StylusPoint(125.508056640625, 39.59695053100586), new StylusPoint(124.87803649902344, 41.93354034423828), new StylusPoint(124.06607055664062, 44.2136116027832), new StylusPoint(123.07764434814453, 46.42367172241211), new StylusPoint(121.89936828613281, 48.54063034057617), new StylusPoint(120.51326751708984, 50.527252197265625), new StylusPoint(118.95008087158203, 52.37460708618164), new StylusPoint(117.21774291992188, 54.0622673034668), new StylusPoint(115.32006072998047, 55.55944061279297), new StylusPoint(113.29732513427734, 56.89299011230469), new StylusPoint(111.12110137939453, 57.95765686035156), new StylusPoint(108.87673950195312, 58.85777282714844), new StylusPoint(106.57721710205078, 59.6169548034668), new StylusPoint(104.21409606933594, 60.151268005371094), new StylusPoint(101.82872009277344, 60.55175018310547), new StylusPoint(99.41983795166016, 60.81082534790039), new StylusPoint(97.00367736816406, 60.98807144165039), new StylusPoint(94.58511352539062, 61.12248611450195), new StylusPoint(92.16334533691406, 61.1923942565918), new StylusPoint(89.7415771484375, 61.262298583984375), new StylusPoint(87.31958770751953, 61.31795883178711), new StylusPoint(84.89682006835938, 61.3248176574707), new StylusPoint(82.47405242919922, 61.33168029785156), new StylusPoint(80.05128479003906, 61.33854293823242), new StylusPoint(77.62852478027344, 61.345401763916016), new StylusPoint(75.20575714111328, 61.352264404296875), new StylusPoint(72.78298950195312, 61.359127044677734), new StylusPoint(70.36029052734375, 61.378013610839844), new StylusPoint(67.93759155273438, 61.39735412597656), new StylusPoint(65.514892578125, 61.416690826416016), new StylusPoint(63.09219741821289, 61.436031341552734), new StylusPoint(60.669498443603516, 61.45537185668945), new StylusPoint(58.24679946899414, 61.474708557128906), new StylusPoint(55.82410430908203, 61.494049072265625), new StylusPoint(53.401405334472656, 61.51338577270508), new StylusPoint(53.12109375, 59.3731689453125), new StylusPoint(53.12109375, 56.95039367675781), new StylusPoint(53.12109375, 54.527618408203125), new StylusPoint(53.12109375, 52.10484313964844), new StylusPoint(53.12109375, 49.68206787109375), new StylusPoint(53.12109375, 47.25929260253906), new StylusPoint(53.12109375, 44.836517333984375), new StylusPoint(53.12109375, 42.41374206542969), new StylusPoint(53.12109375, 39.990966796875), new StylusPoint(53.12109375, 37.56819152832031), new StylusPoint(53.12109375, 35.145416259765625), new StylusPoint(53.12109375, 32.72264099121094), new StylusPoint(53.12109375, 30.29986572265625), new StylusPoint(53.12109375, 27.877090454101562), new StylusPoint(53.12109375, 25.454315185546875), new StylusPoint(53.12109375, 23.031539916992188), new StylusPoint(53.12109375, 20.6087646484375), new StylusPoint(53.12109375, 18.185991287231445), new StylusPoint(53.12109375, 15.763215065002441), new StylusPoint(53.12109375, 13.340439796447754), new StylusPoint(53.12109375, 10.917664527893066), new StylusPoint(53.12109375, 8.494889259338379), new StylusPoint(53.12109375, 6.072113990783691), new StylusPoint(53.12109375, 3.649338722229004), new StylusPoint(53.12109375, 1.2265634536743164) })
					};

					return sc;
				}
			}

			/// <summary>
			/// Gets the ANSI NAND.
			/// </summary>
			/// <value>The ANSI NAND.</value>
			public static StrokeCollection NAND
			{
				get
				{
					var sc = new StrokeCollection()
					{
						// in1
						new Stroke(new StylusPointCollection() { new StylusPoint(51.79296875, 15.45703125), new StylusPoint(1.70703125, 15.45703125) }),

						// in2
						new Stroke(new StylusPointCollection() { new StylusPoint(51.79296875, 49.77734375), new StylusPoint(1.70703125, 49.77734375) }),

						// gate
						new Stroke(new StylusPointCollection() { new StylusPoint(51.40234375, 2.01953125), new StylusPoint(53.825199127197266, 2.017261505126953), new StylusPoint(56.24805450439453, 2.0149919986724854), new StylusPoint(58.6709098815918, 2.0127222537994385), new StylusPoint(61.09376525878906, 2.0104527473449707), new StylusPoint(63.51662063598633, 2.008183002471924), new StylusPoint(65.9394760131836, 2.005913257598877), new StylusPoint(68.3623275756836, 2.003643751144409), new StylusPoint(70.78518676757812, 2.0013740062713623), new StylusPoint(73.20803833007812, 1.999104380607605), new StylusPoint(75.63089752197266, 1.9968347549438477), new StylusPoint(78.05362701416016, 2.0159683227539062), new StylusPoint(80.47630310058594, 2.045476198196411), new StylusPoint(82.89897918701172, 2.074984073638916), new StylusPoint(85.3216552734375, 2.1044921875), new StylusPoint(87.74433135986328, 2.134000062942505), new StylusPoint(90.16590118408203, 2.2029082775115967), new StylusPoint(92.58641052246094, 2.3095617294311523), new StylusPoint(95.00691986083984, 2.416215658187866), new StylusPoint(97.42742919921875, 2.522869110107422), new StylusPoint(99.84793090820312, 2.6295228004455566), new StylusPoint(102.25468444824219, 2.8549513816833496), new StylusPoint(104.62493133544922, 3.351522922515869), new StylusPoint(106.94893646240234, 4.029906749725342), new StylusPoint(109.19121551513672, 4.940572738647461), new StylusPoint(111.31334686279297, 6.105330944061279), new StylusPoint(113.25958251953125, 7.544830322265625), new StylusPoint(115.09367370605469, 9.127967834472656), new StylusPoint(116.7995376586914, 10.84111499786377), new StylusPoint(118.38325500488281, 12.672170639038086), new StylusPoint(119.72905731201172, 14.686884880065918), new StylusPoint(120.91050720214844, 16.796964645385742), new StylusPoint(121.95391845703125, 18.98137664794922), new StylusPoint(122.7783203125, 21.259668350219727), new StylusPoint(123.43871307373047, 23.587602615356445), new StylusPoint(123.97364807128906, 25.948888778686523), new StylusPoint(124.31887817382812, 28.347026824951172), new StylusPoint(124.50592803955078, 30.76042366027832), new StylusPoint(124.57425689697266, 33.1805305480957), new StylusPoint(124.47440338134766, 35.601322174072266), new StylusPoint(124.22845458984375, 38.010459899902344), new StylusPoint(123.79212951660156, 40.3912353515625), new StylusPoint(123.16387176513672, 42.72829818725586), new StylusPoint(122.35206604003906, 45.008522033691406), new StylusPoint(121.36380767822266, 47.218746185302734), new StylusPoint(120.18548583984375, 49.33577346801758), new StylusPoint(118.79951477050781, 51.322574615478516), new StylusPoint(117.2364501953125, 53.17012023925781), new StylusPoint(115.50336456298828, 54.85704803466797), new StylusPoint(113.60514831542969, 56.35378646850586), new StylusPoint(111.58233642578125, 57.68738555908203), new StylusPoint(109.40632629394531, 58.75259017944336), new StylusPoint(107.162109375, 59.65324401855469), new StylusPoint(104.86258697509766, 60.41267395019531), new StylusPoint(102.49886322021484, 60.9446907043457), new StylusPoint(100.11334228515625, 61.34556579589844), new StylusPoint(97.70463562011719, 61.60710906982422), new StylusPoint(95.2884292602539, 61.784698486328125), new StylusPoint(92.86979675292969, 61.91926193237305), new StylusPoint(90.44793701171875, 61.989173889160156), new StylusPoint(88.02609252929688, 62.05908203125), new StylusPoint(85.6040267944336, 62.11482238769531), new StylusPoint(83.18116760253906, 62.12168502807617), new StylusPoint(80.7583236694336, 62.12854766845703), new StylusPoint(78.33548736572266, 62.13541030883789), new StylusPoint(75.91262817382812, 62.142269134521484), new StylusPoint(73.48978424072266, 62.149131774902344), new StylusPoint(71.06694030761719, 62.1559944152832), new StylusPoint(68.6441650390625, 62.17440414428711), new StylusPoint(66.22136688232422, 62.193260192871094), new StylusPoint(63.79859161376953, 62.21211624145508), new StylusPoint(61.37581253051758, 62.23097229003906), new StylusPoint(58.95302200317383, 62.24982833862305), new StylusPoint(56.530242919921875, 62.26868438720703), new StylusPoint(54.10746383666992, 62.287540435791016), new StylusPoint(51.684669494628906, 62.306396484375), new StylusPoint(51.40234375, 60.1680793762207), new StylusPoint(51.40234375, 57.7452278137207), new StylusPoint(51.40234375, 55.3223762512207), new StylusPoint(51.40234375, 52.89950942993164), new StylusPoint(51.40234375, 50.47665786743164), new StylusPoint(51.40234375, 48.05380630493164), new StylusPoint(51.40234375, 45.63093948364258), new StylusPoint(51.40234375, 43.20808792114258), new StylusPoint(51.40234375, 40.78523635864258), new StylusPoint(51.40234375, 38.362369537353516), new StylusPoint(51.40234375, 35.939517974853516), new StylusPoint(51.40234375, 33.516666412353516), new StylusPoint(51.40234375, 31.093812942504883), new StylusPoint(51.40234375, 28.67094612121582), new StylusPoint(51.40234375, 26.24809455871582), new StylusPoint(51.40234375, 23.82524299621582), new StylusPoint(51.40234375, 21.402376174926758), new StylusPoint(51.40234375, 18.979524612426758), new StylusPoint(51.40234375, 16.556673049926758), new StylusPoint(51.40234375, 14.133806228637695), new StylusPoint(51.40234375, 11.710954666137695), new StylusPoint(51.40234375, 9.288103103637695), new StylusPoint(51.40234375, 6.8652520179748535), new StylusPoint(51.40234375, 4.442384719848633) }),

						// out1
						new Stroke(new StylusPointCollection() { new StylusPoint(184.19921875, 31.83203125), new StylusPoint(134.11328125, 31.83203125) }),

						// circle
						new Stroke(new StylusPointCollection() { new StylusPoint(134.640625, 32.15234375), new StylusPoint(134.6039581298828, 32.43280792236328), new StylusPoint(134.5673065185547, 32.71327590942383), new StylusPoint(134.5306396484375, 32.99374008178711), new StylusPoint(134.4939727783203, 33.274208068847656), new StylusPoint(134.40731811523438, 33.541690826416016), new StylusPoint(134.3029022216797, 33.804569244384766), new StylusPoint(134.19850158691406, 34.06744384765625), new StylusPoint(134.09410095214844, 34.330322265625), new StylusPoint(133.95474243164062, 34.57377243041992), new StylusPoint(133.7865447998047, 34.80117416381836), new StylusPoint(133.6183319091797, 35.02857971191406), new StylusPoint(133.45013427734375, 35.255985260009766), new StylusPoint(133.26170349121094, 35.464019775390625), new StylusPoint(133.04176330566406, 35.64185333251953), new StylusPoint(132.82180786132812, 35.8196907043457), new StylusPoint(132.6018524169922, 35.99752426147461), new StylusPoint(132.37307739257812, 36.1606330871582), new StylusPoint(132.1125030517578, 36.27069091796875), new StylusPoint(131.85194396972656, 36.38074493408203), new StylusPoint(131.5913848876953, 36.49080276489258), new StylusPoint(131.32955932617188, 36.59623718261719), new StylusPoint(131.04933166503906, 36.63475799560547), new StylusPoint(130.7691192626953, 36.673274993896484), new StylusPoint(130.48890686035156, 36.7117919921875), new StylusPoint(130.20867919921875, 36.749691009521484), new StylusPoint(129.928466796875, 36.71117401123047), new StylusPoint(129.64825439453125, 36.67265319824219), new StylusPoint(129.36802673339844, 36.63413619995117), new StylusPoint(129.0878143310547, 36.595619201660156), new StylusPoint(128.82656860351562, 36.48838806152344), new StylusPoint(128.56629943847656, 36.377655029296875), new StylusPoint(128.3060302734375, 36.26691818237305), new StylusPoint(128.04574584960938, 36.156185150146484), new StylusPoint(127.81780242919922, 35.991268157958984), new StylusPoint(127.59675598144531, 35.81480026245117), new StylusPoint(127.37570190429688, 35.638328552246094), new StylusPoint(127.15464782714844, 35.46186065673828), new StylusPoint(126.96665954589844, 35.25361251831055), new StylusPoint(126.79906463623047, 35.025760650634766), new StylusPoint(126.6314697265625, 34.79790496826172), new StylusPoint(126.46387481689453, 34.57005310058594), new StylusPoint(126.3255844116211, 34.325897216796875), new StylusPoint(126.22037506103516, 34.0633430480957), new StylusPoint(126.11516571044922, 33.800785064697266), new StylusPoint(126.00995635986328, 33.53822708129883), new StylusPoint(125.92428588867188, 33.270668029785156), new StylusPoint(125.89032745361328, 32.98986053466797), new StylusPoint(125.85637664794922, 32.70905303955078), new StylusPoint(125.82242584228516, 32.42824935913086), new StylusPoint(125.7896499633789, 32.14744186401367), new StylusPoint(125.8233871459961, 31.866607666015625), new StylusPoint(125.85712432861328, 31.58577537536621), new StylusPoint(125.89086151123047, 31.304943084716797), new StylusPoint(125.92459869384766, 31.024110794067383), new StylusPoint(126.01097869873047, 30.75677490234375), new StylusPoint(126.11651611328125, 30.494346618652344), new StylusPoint(126.2220458984375, 30.231918334960938), new StylusPoint(126.32757568359375, 29.969491958618164), new StylusPoint(126.46703338623047, 29.725919723510742), new StylusPoint(126.6341781616211, 29.497737884521484), new StylusPoint(126.80133056640625, 29.269554138183594), new StylusPoint(126.96847534179688, 29.041370391845703), new StylusPoint(127.15703582763672, 28.83384132385254), new StylusPoint(127.37899017333984, 28.658512115478516), new StylusPoint(127.6009521484375, 28.483184814453125), new StylusPoint(127.82290649414062, 28.3078556060791), new StylusPoint(128.05247497558594, 28.145261764526367), new StylusPoint(128.3120574951172, 28.032930374145508), new StylusPoint(128.5716552734375, 27.92059898376465), new StylusPoint(128.83123779296875, 27.80826759338379), new StylusPoint(129.0921630859375, 27.700719833374023), new StylusPoint(129.3725128173828, 27.663148880004883), new StylusPoint(129.65284729003906, 27.62557601928711), new StylusPoint(129.93319702148438, 27.58800506591797), new StylusPoint(130.2135467529297, 27.551130294799805), new StylusPoint(130.49388122558594, 27.588703155517578), new StylusPoint(130.77423095703125, 27.62627410888672), new StylusPoint(131.05458068847656, 27.663846969604492), new StylusPoint(131.3349151611328, 27.701417922973633), new StylusPoint(131.59573364257812, 27.80970001220703), new StylusPoint(131.85562133789062, 27.921348571777344), new StylusPoint(132.11550903320312, 28.032995223999023), new StylusPoint(132.37538146972656, 28.144641876220703), new StylusPoint(132.6044158935547, 28.30774688720703), new StylusPoint(132.82528686523438, 28.48444366455078), new StylusPoint(133.04615783691406, 28.66114044189453), new StylusPoint(133.26702880859375, 28.83783721923828), new StylusPoint(133.45416259765625, 29.046937942504883), new StylusPoint(133.62191772460938, 29.274673461914062), new StylusPoint(133.7896728515625, 29.502408981323242), new StylusPoint(133.95742797851562, 29.73014259338379), new StylusPoint(134.09576416015625, 29.974225997924805), new StylusPoint(134.2004852294922, 30.236974716186523), new StylusPoint(134.3052215576172, 30.499723434448242), new StylusPoint(134.40994262695312, 30.762474060058594), new StylusPoint(134.4949188232422, 31.030359268188477), new StylusPoint(134.53134155273438, 31.310855865478516), new StylusPoint(134.56776428222656, 31.591350555419922), new StylusPoint(134.6042022705078, 31.87184715270996) })
					};

					return sc;
				}
			}

			/// <summary>
			/// Gets the ANSI OR.
			/// </summary>
			/// <value>The ANSI OR.</value>
			public static StrokeCollection OR
			{
				get
				{
					var sc = new StrokeCollection()
					{
						// in1
						new Stroke(new StylusPointCollection() { new StylusPoint(53.0859375, 16.51953125), new StylusPoint(3, 16.51953125) }),
	
						// in2
						new Stroke(new StylusPointCollection() { new StylusPoint(53.0859375, 50.8359375), new StylusPoint(3, 50.8359375) }),
	
						// out1
						new Stroke(new StylusPointCollection() { new StylusPoint(166.0859375, 34.25390625), new StylusPoint(116, 34.25390625) }),
	
						// gate
						new Stroke(new StylusPointCollection() { new StylusPoint(46.68359375, 1.23828125), new StylusPoint(47.77083969116211, 3.2510640621185303), new StylusPoint(48.85808563232422, 5.2638468742370605), new StylusPoint(49.851810455322266, 7.323423862457275), new StylusPoint(50.810829162597656, 9.400364875793457), new StylusPoint(51.67597579956055, 11.516749382019043), new StylusPoint(52.488277435302734, 13.655339241027832), new StylusPoint(53.19017791748047, 15.831337928771973), new StylusPoint(53.845176696777344, 18.02322769165039), new StylusPoint(54.35284423828125, 20.25312042236328), new StylusPoint(54.818336486816406, 22.492246627807617), new StylusPoint(55.147666931152344, 24.756080627441406), new StylusPoint(55.41082763671875, 27.02731704711914), new StylusPoint(55.589839935302734, 29.307964324951172), new StylusPoint(55.67665481567383, 31.59339141845703), new StylusPoint(55.7253532409668, 33.88029098510742), new StylusPoint(55.649269104003906, 36.16668701171875), new StylusPoint(55.563297271728516, 38.452423095703125), new StylusPoint(55.33485794067383, 40.72865295410156), new StylusPoint(55.08180236816406, 43.001502990722656), new StylusPoint(54.68893814086914, 45.25518035888672), new StylusPoint(54.248497009277344, 47.498817443847656), new StylusPoint(53.69720458984375, 49.719058990478516), new StylusPoint(53.066627502441406, 51.91646194458008), new StylusPoint(52.35232925415039, 54.089752197265625), new StylusPoint(51.54069900512695, 56.22745132446289), new StylusPoint(50.68476867675781, 58.34895706176758), new StylusPoint(49.714534759521484, 60.42014694213867), new StylusPoint(48.72483825683594, 62.482547760009766), new StylusPoint(47.632415771484375, 64.49252319335938), new StylusPoint(46.98419189453125, 66.2294692993164), new StylusPoint(49.27086639404297, 66.1624526977539), new StylusPoint(51.556148529052734, 66.07029724121094), new StylusPoint(53.83607482910156, 65.88237762451172), new StylusPoint(56.11400604248047, 65.67569732666016), new StylusPoint(58.3822021484375, 65.3779296875), new StylusPoint(60.649681091308594, 65.07545471191406), new StylusPoint(62.901954650878906, 64.6746597290039), new StylusPoint(65.15423583984375, 64.27385711669922), new StylusPoint(67.38868713378906, 63.78485870361328), new StylusPoint(69.61981964111328, 63.27943420410156), new StylusPoint(71.83696746826172, 62.71794509887695), new StylusPoint(74.04426574707031, 62.11688232421875), new StylusPoint(76.24286651611328, 61.48664855957031), new StylusPoint(78.4197769165039, 60.783443450927734), new StylusPoint(80.59667205810547, 60.08024215698242), new StylusPoint(82.73975372314453, 59.280094146728516), new StylusPoint(84.88154602050781, 58.47629165649414), new StylusPoint(86.9944076538086, 57.60121154785156), new StylusPoint(89.09033966064453, 56.684452056884766), new StylusPoint(91.17017364501953, 55.733394622802734), new StylusPoint(93.21394348144531, 54.705570220947266), new StylusPoint(95.25732421875, 53.67704772949219), new StylusPoint(97.2338638305664, 52.52521514892578), new StylusPoint(99.21039581298828, 51.37338638305664), new StylusPoint(101.12748718261719, 50.12690734863281), new StylusPoint(103.02335357666016, 48.84662628173828), new StylusPoint(104.86537170410156, 47.492977142333984), new StylusPoint(106.65557861328125, 46.068702697753906), new StylusPoint(108.40413665771484, 44.59636688232422), new StylusPoint(110.06888580322266, 43.02727127075195), new StylusPoint(111.69960021972656, 41.42549514770508), new StylusPoint(113.20108795166016, 39.69953918457031), new StylusPoint(114.6758804321289, 37.95277404785156), new StylusPoint(115.98324584960938, 36.075477600097656), new StylusPoint(116.99976348876953, 34.202880859375), new StylusPoint(115.63260650634766, 32.368690490722656), new StylusPoint(114.23894500732422, 30.556377410888672), new StylusPoint(112.69693756103516, 28.866504669189453), new StylusPoint(111.138427734375, 27.19308090209961), new StylusPoint(109.45574951171875, 25.643247604370117), new StylusPoint(107.7730484008789, 24.093442916870117), new StylusPoint(105.97886657714844, 22.674163818359375), new StylusPoint(104.1846923828125, 21.254892349243164), new StylusPoint(102.31796264648438, 19.933807373046875), new StylusPoint(100.43445587158203, 18.635433197021484), new StylusPoint(98.51010131835938, 17.400211334228516), new StylusPoint(96.55310821533203, 16.215492248535156), new StylusPoint(94.58075714111328, 15.057729721069336), new StylusPoint(92.5633773803711, 13.97901439666748), new StylusPoint(90.54601287841797, 12.900306701660156), new StylusPoint(88.48147583007812, 11.915427207946777), new StylusPoint(86.41234588623047, 10.93967342376709), new StylusPoint(84.31986999511719, 10.016458511352539), new StylusPoint(82.20857238769531, 9.135653495788574), new StylusPoint(80.09003448486328, 8.273431777954102), new StylusPoint(77.93962097167969, 7.492973327636719), new StylusPoint(75.78919982910156, 6.712510108947754), new StylusPoint(73.61123657226562, 6.013677597045898), new StylusPoint(71.42774200439453, 5.331230163574219), new StylusPoint(69.22953033447266, 4.6999335289001465), new StylusPoint(67.0171127319336, 4.117990016937256), new StylusPoint(64.79878234863281, 3.5609493255615234), new StylusPoint(62.561668395996094, 3.082707166671753), new StylusPoint(60.323787689208984, 2.6085891723632812), new StylusPoint(58.06455993652344, 2.2489566802978516), new StylusPoint(55.80534362792969, 1.8893266916275024), new StylusPoint(53.530887603759766, 1.6464874744415283), new StylusPoint(51.25504684448242, 1.4142587184906006), new StylusPoint(48.96984100341797, 1.318536639213562), new StylusPoint(46.68359375, 1.23828125) })
					};

					return sc;
				}
			}

			/// <summary>
			/// Gets the ANSI NOR.
			/// </summary>
			/// <value>The ANSI NOR.</value>
			public static StrokeCollection NOR
			{
				get
				{
					var sc = new StrokeCollection()
					{
						// in1
						new Stroke(new StylusPointCollection() { new StylusPoint(54.2890625, 16.7421875), new StylusPoint(4.19921875, 16.7421875) }),
	
						// in2
						new Stroke(new StylusPointCollection() { new StylusPoint(54.2890625, 51.0625), new StylusPoint(4.19921875, 51.0625) }),
	
						//
						new Stroke(new StylusPointCollection() { new StylusPoint(177.9609375, 34.48046875), new StylusPoint(177.4600830078125, 34.48046875), new StylusPoint(176.95921325683594, 34.48046875), new StylusPoint(176.45835876464844, 34.48046875), new StylusPoint(175.95750427246094, 34.48046875), new StylusPoint(175.45663452148438, 34.48046875), new StylusPoint(174.95578002929688, 34.48046875), new StylusPoint(174.45492553710938, 34.48046875), new StylusPoint(173.9540557861328, 34.48046875), new StylusPoint(173.4532012939453, 34.48046875), new StylusPoint(172.9523468017578, 34.48046875), new StylusPoint(172.45147705078125, 34.48046875), new StylusPoint(171.95062255859375, 34.48046875), new StylusPoint(171.44976806640625, 34.48046875), new StylusPoint(170.94891357421875, 34.48046875), new StylusPoint(170.4480438232422, 34.48046875), new StylusPoint(169.9471893310547, 34.48046875), new StylusPoint(169.4463348388672, 34.48046875), new StylusPoint(168.94546508789062, 34.48046875), new StylusPoint(168.44461059570312, 34.48046875), new StylusPoint(167.94375610351562, 34.48046875), new StylusPoint(167.44288635253906, 34.48046875), new StylusPoint(166.94203186035156, 34.48046875), new StylusPoint(166.44117736816406, 34.48046875), new StylusPoint(165.9403076171875, 34.48046875), new StylusPoint(165.439453125, 34.48046875), new StylusPoint(164.9385986328125, 34.48046875), new StylusPoint(164.43772888183594, 34.48046875), new StylusPoint(163.93687438964844, 34.48046875), new StylusPoint(163.43601989746094, 34.48046875), new StylusPoint(162.93515014648438, 34.48046875), new StylusPoint(162.43429565429688, 34.48046875), new StylusPoint(161.93344116210938, 34.48046875), new StylusPoint(161.43258666992188, 34.48046875), new StylusPoint(160.9317169189453, 34.48046875), new StylusPoint(160.4308624267578, 34.48046875), new StylusPoint(159.92999267578125, 34.48046875), new StylusPoint(159.42913818359375, 34.48046875), new StylusPoint(158.92828369140625, 34.48046875), new StylusPoint(158.42742919921875, 34.48046875), new StylusPoint(157.9265594482422, 34.48046875), new StylusPoint(157.4257049560547, 34.48046875), new StylusPoint(156.92483520507812, 34.48046875), new StylusPoint(156.42398071289062, 34.48046875), new StylusPoint(155.92312622070312, 34.48046875), new StylusPoint(155.42227172851562, 34.48046875), new StylusPoint(154.92140197753906, 34.48046875), new StylusPoint(154.42054748535156, 34.48046875), new StylusPoint(153.91969299316406, 34.48046875), new StylusPoint(153.4188232421875, 34.48046875), new StylusPoint(152.91796875, 34.48046875), new StylusPoint(152.4171142578125, 34.48046875), new StylusPoint(151.91624450683594, 34.48046875), new StylusPoint(151.41539001464844, 34.48046875), new StylusPoint(150.91453552246094, 34.48046875), new StylusPoint(150.41366577148438, 34.48046875), new StylusPoint(149.91281127929688, 34.48046875), new StylusPoint(149.41195678710938, 34.48046875), new StylusPoint(148.91110229492188, 34.48046875), new StylusPoint(148.4102325439453, 34.48046875), new StylusPoint(147.9093780517578, 34.48046875), new StylusPoint(147.40850830078125, 34.48046875), new StylusPoint(146.90765380859375, 34.48046875), new StylusPoint(146.40679931640625, 34.48046875), new StylusPoint(145.90594482421875, 34.48046875), new StylusPoint(145.4050750732422, 34.48046875), new StylusPoint(144.9042205810547, 34.48046875), new StylusPoint(144.40335083007812, 34.48046875), new StylusPoint(143.90249633789062, 34.48046875), new StylusPoint(143.40164184570312, 34.48046875), new StylusPoint(142.90078735351562, 34.48046875), new StylusPoint(142.39991760253906, 34.48046875), new StylusPoint(141.89906311035156, 34.48046875), new StylusPoint(141.39820861816406, 34.48046875), new StylusPoint(140.8973388671875, 34.48046875), new StylusPoint(140.396484375, 34.48046875), new StylusPoint(139.8956298828125, 34.48046875), new StylusPoint(139.39476013183594, 34.48046875), new StylusPoint(138.89390563964844, 34.48046875), new StylusPoint(138.39305114746094, 34.48046875), new StylusPoint(137.89218139648438, 34.48046875), new StylusPoint(137.39132690429688, 34.48046875), new StylusPoint(136.89047241210938, 34.48046875), new StylusPoint(136.38961791992188, 34.48046875), new StylusPoint(135.8887481689453, 34.48046875), new StylusPoint(135.3878936767578, 34.48046875), new StylusPoint(134.88702392578125, 34.48046875), new StylusPoint(134.38616943359375, 34.48046875), new StylusPoint(133.88531494140625, 34.48046875), new StylusPoint(133.38446044921875, 34.48046875), new StylusPoint(132.8835906982422, 34.48046875), new StylusPoint(132.3827362060547, 34.48046875), new StylusPoint(131.88186645507812, 34.48046875), new StylusPoint(131.38101196289062, 34.48046875), new StylusPoint(130.88015747070312, 34.48046875), new StylusPoint(130.37930297851562, 34.48046875), new StylusPoint(129.87843322753906, 34.48046875), new StylusPoint(129.37757873535156, 34.48046875), new StylusPoint(128.87672424316406, 34.48046875), new StylusPoint(128.3758544921875, 34.48046875), new StylusPoint(127.875, 34.48046875) }),
	
						//
						new Stroke(new StylusPointCollection() { new StylusPoint(47.88671875, 1.46484375), new StylusPoint(48.97394561767578, 3.4775922298431396), new StylusPoint(50.06117630004883, 5.490340709686279), new StylusPoint(51.05488586425781, 7.549880027770996), new StylusPoint(52.01388931274414, 9.626785278320312), new StylusPoint(52.878334045410156, 11.743395805358887), new StylusPoint(53.68952560424805, 13.882364273071289), new StylusPoint(54.3907585144043, 16.05855941772461), new StylusPoint(55.045745849609375, 18.250410079956055), new StylusPoint(55.55305862426758, 20.480356216430664), new StylusPoint(56.018226623535156, 22.719505310058594), new StylusPoint(56.3475456237793, 24.983299255371094), new StylusPoint(56.61040496826172, 27.25452995300293), new StylusPoint(56.78941345214844, 29.535139083862305), new StylusPoint(56.8759880065918, 31.820539474487305), new StylusPoint(56.92442321777344, 34.107398986816406), new StylusPoint(56.84834289550781, 36.39375305175781), new StylusPoint(56.762081146240234, 38.6794319152832), new StylusPoint(56.53364562988281, 40.955623626708984), new StylusPoint(56.28028106689453, 43.2283935546875), new StylusPoint(55.887428283691406, 45.482032775878906), new StylusPoint(55.44669723510742, 47.72557067871094), new StylusPoint(54.895416259765625, 49.94577407836914), new StylusPoint(54.26551055908203, 52.143367767333984), new StylusPoint(53.553184509277344, 54.317264556884766), new StylusPoint(52.74236297607422, 56.45521545410156), new StylusPoint(51.88719177246094, 58.576988220214844), new StylusPoint(50.91697692871094, 60.64813995361328), new StylusPoint(49.927223205566406, 62.71046447753906), new StylusPoint(48.83481979370117, 64.72040557861328), new StylusPoint(48.18878173828125, 66.45599365234375), new StylusPoint(50.47541809082031, 66.38897705078125), new StylusPoint(52.760650634765625, 66.29674530029297), new StylusPoint(55.04054641723633, 66.10883331298828), new StylusPoint(57.31842803955078, 65.90209197998047), new StylusPoint(59.58659362792969, 65.60432434082031), new StylusPoint(61.8540153503418, 65.30180358886719), new StylusPoint(64.10626220703125, 64.90100860595703), new StylusPoint(66.3584976196289, 64.50021362304688), new StylusPoint(68.5928955078125, 64.01117706298828), new StylusPoint(70.8239974975586, 63.505760192871094), new StylusPoint(73.04109954833984, 62.944236755371094), new StylusPoint(75.24835205078125, 62.34318161010742), new StylusPoint(77.44691467285156, 61.712913513183594), new StylusPoint(79.62377166748047, 61.00972366333008), new StylusPoint(81.80064392089844, 60.3065299987793), new StylusPoint(83.94366455078125, 59.5063591003418), new StylusPoint(86.08543395996094, 58.70256805419922), new StylusPoint(88.19823455810547, 57.82746887207031), new StylusPoint(90.29414367675781, 56.91072082519531), new StylusPoint(92.37390899658203, 55.95964813232422), new StylusPoint(94.41764068603516, 54.931846618652344), new StylusPoint(96.46098327636719, 53.90330123901367), new StylusPoint(98.4374771118164, 52.75149154663086), new StylusPoint(100.41397857666016, 51.59968185424805), new StylusPoint(102.33101654052734, 50.35319519042969), new StylusPoint(104.22685241699219, 49.07293701171875), new StylusPoint(106.06880950927734, 47.71928405761719), new StylusPoint(107.85899353027344, 46.2950325012207), new StylusPoint(109.60751342773438, 44.82269287109375), new StylusPoint(111.27222442626953, 43.25362777709961), new StylusPoint(112.90289306640625, 41.6518669128418), new StylusPoint(114.40435791015625, 39.925933837890625), new StylusPoint(115.87911224365234, 38.17918014526367), new StylusPoint(117.18644714355469, 36.30193328857422), new StylusPoint(118.20282745361328, 34.42936325073242), new StylusPoint(116.83568572998047, 32.59519958496094), new StylusPoint(115.44188690185547, 30.78305435180664), new StylusPoint(113.89887237548828, 29.09418487548828), new StylusPoint(112.3396224975586, 27.421463012695312), new StylusPoint(110.65696716308594, 25.87165069580078), new StylusPoint(108.97432708740234, 24.321847915649414), new StylusPoint(107.18028259277344, 22.902467727661133), new StylusPoint(105.38613891601562, 21.48321533203125), new StylusPoint(103.51954650878906, 20.161998748779297), new StylusPoint(101.63607788085938, 18.863649368286133), new StylusPoint(99.71185302734375, 17.628307342529297), new StylusPoint(97.7548828125, 16.443603515625), new StylusPoint(95.78265380859375, 15.285724639892578), new StylusPoint(93.76531982421875, 14.207030296325684), new StylusPoint(91.74797821044922, 13.128336906433105), new StylusPoint(89.68353271484375, 12.143330574035645), new StylusPoint(87.61444854736328, 11.167596817016602), new StylusPoint(85.5220718383789, 10.244267463684082), new StylusPoint(83.41080474853516, 9.363472938537598), new StylusPoint(81.29236602783203, 8.501123428344727), new StylusPoint(79.14198303222656, 7.720676422119141), new StylusPoint(76.9916000366211, 6.940228462219238), new StylusPoint(74.81372833251953, 6.241264343261719), new StylusPoint(72.63026428222656, 5.558826446533203), new StylusPoint(70.43212890625, 4.927384853363037), new StylusPoint(68.21975708007812, 4.345453262329102), new StylusPoint(66.00150299072266, 3.788261651992798), new StylusPoint(63.76442337036133, 3.310025691986084), new StylusPoint(61.526611328125, 2.8357248306274414), new StylusPoint(59.26744079589844, 2.476102113723755), new StylusPoint(57.00825500488281, 2.1164770126342773), new StylusPoint(54.7338752746582, 1.873253583908081), new StylusPoint(52.45808410644531, 1.6408324241638184), new StylusPoint(50.172943115234375, 1.5450981855392456) }),
	
						//
						new Stroke(new StylusPointCollection() { new StylusPoint(127.8046875, 34.65234375), new StylusPoint(127.76803588867188, 34.93270492553711), new StylusPoint(127.73139190673828, 35.21306610107422), new StylusPoint(127.69474029541016, 35.49342727661133), new StylusPoint(127.65809631347656, 35.77378463745117), new StylusPoint(127.57133483886719, 36.04110336303711), new StylusPoint(127.46664428710938, 36.30375671386719), new StylusPoint(127.3619613647461, 36.56640625), new StylusPoint(127.25727081298828, 36.82905960083008), new StylusPoint(127.11721801757812, 37.072017669677734), new StylusPoint(126.9490737915039, 37.29933547973633), new StylusPoint(126.78093719482422, 37.52665328979492), new StylusPoint(126.61279296875, 37.75397491455078), new StylusPoint(126.42401885986328, 37.96152877807617), new StylusPoint(126.20414733886719, 38.13929748535156), new StylusPoint(125.9842758178711, 38.31706619262695), new StylusPoint(125.764404296875, 38.494834899902344), new StylusPoint(125.53544616699219, 38.65743637084961), new StylusPoint(125.27498626708984, 38.767452239990234), new StylusPoint(125.01451873779297, 38.87746810913086), new StylusPoint(124.75405883789062, 38.987483978271484), new StylusPoint(124.49222564697266, 39.09252166748047), new StylusPoint(124.21211242675781, 39.13102722167969), new StylusPoint(123.93199920654297, 39.16952896118164), new StylusPoint(123.65188598632812, 39.20803451538086), new StylusPoint(123.37177276611328, 39.24565124511719), new StylusPoint(123.09164428710938, 39.207279205322266), new StylusPoint(122.81151580810547, 39.16890335083008), new StylusPoint(122.53138732910156, 39.130531311035156), new StylusPoint(122.25125885009766, 39.09215545654297), new StylusPoint(121.9900131225586, 38.98550033569336), new StylusPoint(121.72998046875, 38.87446594238281), new StylusPoint(121.46995544433594, 38.763431549072266), new StylusPoint(121.20992279052734, 38.65239334106445), new StylusPoint(120.98206329345703, 38.487518310546875), new StylusPoint(120.76109313964844, 38.31111526489258), new StylusPoint(120.54012298583984, 38.13471221923828), new StylusPoint(120.31916046142578, 37.958309173583984), new StylusPoint(120.1311264038086, 37.750247955322266), new StylusPoint(119.96359252929688, 37.52248001098633), new StylusPoint(119.79605865478516, 37.29471206665039), new StylusPoint(119.62852478027344, 37.06694412231445), new StylusPoint(119.48990631103516, 36.82307052612305), new StylusPoint(119.38441467285156, 36.56074142456055), new StylusPoint(119.27892303466797, 36.29841232299805), new StylusPoint(119.17343139648438, 36.03608322143555), new StylusPoint(119.08783721923828, 35.768611907958984), new StylusPoint(119.05299377441406, 35.48801803588867), new StylusPoint(119.01815032958984, 35.207427978515625), new StylusPoint(118.98330688476562, 34.92683792114258), new StylusPoint(118.9499740600586, 34.64624786376953), new StylusPoint(118.9845962524414, 34.365631103515625), new StylusPoint(119.01921081542969, 34.08501052856445), new StylusPoint(119.0538330078125, 33.80439376831055), new StylusPoint(119.08845520019531, 33.523773193359375), new StylusPoint(119.17511749267578, 33.256587982177734), new StylusPoint(119.28060913085938, 32.99425506591797), new StylusPoint(119.38610076904297, 32.73192596435547), new StylusPoint(119.49159240722656, 32.46959686279297), new StylusPoint(119.63096618652344, 32.226097106933594), new StylusPoint(119.79804992675781, 31.998001098632812), new StylusPoint(119.96513366699219, 31.7699031829834), new StylusPoint(120.13221740722656, 31.541807174682617), new StylusPoint(120.32077026367188, 31.33446502685547), new StylusPoint(120.54309844970703, 31.159778594970703), new StylusPoint(120.76542663574219, 30.985090255737305), new StylusPoint(120.98775482177734, 30.81040382385254), new StylusPoint(121.21774291992188, 30.648561477661133), new StylusPoint(121.47708129882812, 30.53592872619629), new StylusPoint(121.7364273071289, 30.42329216003418), new StylusPoint(121.99577331542969, 30.310659408569336), new StylusPoint(122.25678253173828, 30.204038619995117), new StylusPoint(122.53704071044922, 30.166606903076172), new StylusPoint(122.81729888916016, 30.129175186157227), new StylusPoint(123.0975570678711, 30.09174346923828), new StylusPoint(123.37781524658203, 30.055065155029297), new StylusPoint(123.65805053710938, 30.092622756958008), new StylusPoint(123.93829345703125, 30.13018035888672), new StylusPoint(124.21853637695312, 30.16773796081543), new StylusPoint(124.49877166748047, 30.20529556274414), new StylusPoint(124.75950622558594, 30.3134822845459), new StylusPoint(125.01929473876953, 30.425086975097656), new StylusPoint(125.27908325195312, 30.536693572998047), new StylusPoint(125.53887176513672, 30.648298263549805), new StylusPoint(125.76825714111328, 30.81073760986328), new StylusPoint(125.989501953125, 30.986791610717773), new StylusPoint(126.21074676513672, 31.16284942626953), new StylusPoint(126.43199157714844, 31.338903427124023), new StylusPoint(126.61898803710938, 31.547962188720703), new StylusPoint(126.78667449951172, 31.775609970092773), new StylusPoint(126.9543685913086, 32.00326156616211), new StylusPoint(127.12206268310547, 32.23091125488281), new StylusPoint(127.26013946533203, 32.47500991821289), new StylusPoint(127.36483001708984, 32.73766326904297), new StylusPoint(127.46951293945312, 33.00031661987305), new StylusPoint(127.57420349121094, 33.26296615600586), new StylusPoint(127.65902709960938, 33.53077697753906), new StylusPoint(127.69544219970703, 33.8111686706543), new StylusPoint(127.73185729980469, 34.09156036376953), new StylusPoint(127.76827239990234, 34.371952056884766) })
					};

					return sc;
				}
			}

			/// <summary>
			/// Gets the ANSI XOR.
			/// </summary>
			/// <value>The ANSI XOR.</value>
			public static StrokeCollection XOR
			{
				get
				{
					var sc = new StrokeCollection()
					{
						// in1
						new Stroke(new StylusPointCollection() { new StylusPoint(51.34765625, 17.08984375), new StylusPoint(1.26171875, 17.08984375) }),

						// in2
						new Stroke(new StylusPointCollection() { new StylusPoint(51.34765625, 51.41015625), new StylusPoint(1.26171875, 51.41015625) }),

						new Stroke(new StylusPointCollection() { new StylusPoint(172.34765625, 34.82421875), new StylusPoint(171.8468017578125, 34.82421875), new StylusPoint(171.34593200683594, 34.82421875), new StylusPoint(170.84507751464844, 34.82421875), new StylusPoint(170.34422302246094, 34.82421875), new StylusPoint(169.84335327148438, 34.82421875), new StylusPoint(169.34249877929688, 34.82421875), new StylusPoint(168.84164428710938, 34.82421875), new StylusPoint(168.3407745361328, 34.82421875), new StylusPoint(167.8399200439453, 34.82421875), new StylusPoint(167.3390655517578, 34.82421875), new StylusPoint(166.83819580078125, 34.82421875), new StylusPoint(166.33734130859375, 34.82421875), new StylusPoint(165.83648681640625, 34.82421875), new StylusPoint(165.33563232421875, 34.82421875), new StylusPoint(164.8347625732422, 34.82421875), new StylusPoint(164.3339080810547, 34.82421875), new StylusPoint(163.8330535888672, 34.82421875), new StylusPoint(163.33218383789062, 34.82421875), new StylusPoint(162.83132934570312, 34.82421875), new StylusPoint(162.33047485351562, 34.82421875), new StylusPoint(161.82960510253906, 34.82421875), new StylusPoint(161.32875061035156, 34.82421875), new StylusPoint(160.82789611816406, 34.82421875), new StylusPoint(160.3270263671875, 34.82421875), new StylusPoint(159.826171875, 34.82421875), new StylusPoint(159.3253173828125, 34.82421875), new StylusPoint(158.82444763183594, 34.82421875), new StylusPoint(158.32359313964844, 34.82421875), new StylusPoint(157.82273864746094, 34.82421875), new StylusPoint(157.32186889648438, 34.82421875), new StylusPoint(156.82101440429688, 34.82421875), new StylusPoint(156.32015991210938, 34.82421875), new StylusPoint(155.81930541992188, 34.82421875), new StylusPoint(155.3184356689453, 34.82421875), new StylusPoint(154.8175811767578, 34.82421875), new StylusPoint(154.31671142578125, 34.82421875), new StylusPoint(153.81585693359375, 34.82421875), new StylusPoint(153.31500244140625, 34.82421875), new StylusPoint(152.81414794921875, 34.82421875), new StylusPoint(152.3132781982422, 34.82421875), new StylusPoint(151.8124237060547, 34.82421875), new StylusPoint(151.31155395507812, 34.82421875), new StylusPoint(150.81069946289062, 34.82421875), new StylusPoint(150.30984497070312, 34.82421875), new StylusPoint(149.80899047851562, 34.82421875), new StylusPoint(149.30812072753906, 34.82421875), new StylusPoint(148.80726623535156, 34.82421875), new StylusPoint(148.30641174316406, 34.82421875), new StylusPoint(147.8055419921875, 34.82421875), new StylusPoint(147.3046875, 34.82421875), new StylusPoint(146.8038330078125, 34.82421875), new StylusPoint(146.30296325683594, 34.82421875), new StylusPoint(145.80210876464844, 34.82421875), new StylusPoint(145.30125427246094, 34.82421875), new StylusPoint(144.80038452148438, 34.82421875), new StylusPoint(144.29953002929688, 34.82421875), new StylusPoint(143.79867553710938, 34.82421875), new StylusPoint(143.29782104492188, 34.82421875), new StylusPoint(142.7969512939453, 34.82421875), new StylusPoint(142.2960968017578, 34.82421875), new StylusPoint(141.79522705078125, 34.82421875), new StylusPoint(141.29437255859375, 34.82421875), new StylusPoint(140.79351806640625, 34.82421875), new StylusPoint(140.29266357421875, 34.82421875), new StylusPoint(139.7917938232422, 34.82421875), new StylusPoint(139.2909393310547, 34.82421875), new StylusPoint(138.79006958007812, 34.82421875), new StylusPoint(138.28921508789062, 34.82421875), new StylusPoint(137.78836059570312, 34.82421875), new StylusPoint(137.28750610351562, 34.82421875), new StylusPoint(136.78663635253906, 34.82421875), new StylusPoint(136.28578186035156, 34.82421875), new StylusPoint(135.78492736816406, 34.82421875), new StylusPoint(135.2840576171875, 34.82421875), new StylusPoint(134.783203125, 34.82421875), new StylusPoint(134.2823486328125, 34.82421875), new StylusPoint(133.78147888183594, 34.82421875), new StylusPoint(133.28062438964844, 34.82421875), new StylusPoint(132.77976989746094, 34.82421875), new StylusPoint(132.27890014648438, 34.82421875), new StylusPoint(131.77804565429688, 34.82421875), new StylusPoint(131.27719116210938, 34.82421875), new StylusPoint(130.77633666992188, 34.82421875), new StylusPoint(130.2754669189453, 34.82421875), new StylusPoint(129.7746124267578, 34.82421875), new StylusPoint(129.27374267578125, 34.82421875), new StylusPoint(128.77288818359375, 34.82421875), new StylusPoint(128.27203369140625, 34.82421875), new StylusPoint(127.77117156982422, 34.82421875), new StylusPoint(127.27030944824219, 34.82421875), new StylusPoint(126.76945495605469, 34.82421875), new StylusPoint(126.26859283447266, 34.82421875), new StylusPoint(125.76773071289062, 34.82421875), new StylusPoint(125.26687622070312, 34.82421875), new StylusPoint(124.7660140991211, 34.82421875), new StylusPoint(124.26515197753906, 34.82421875), new StylusPoint(123.76429748535156, 34.82421875), new StylusPoint(123.26344299316406, 34.82421875), new StylusPoint(122.7625732421875, 34.82421875), new StylusPoint(122.26171875, 34.82421875) }),

						new Stroke(new StylusPointCollection() { new StylusPoint(52.94921875, 1.80859375), new StylusPoint(54.03644561767578, 3.821342706680298), new StylusPoint(55.12367630004883, 5.834091663360596), new StylusPoint(56.11738586425781, 7.8936309814453125), new StylusPoint(57.07638931274414, 9.970537185668945), new StylusPoint(57.940406799316406, 12.087308883666992), new StylusPoint(58.75093078613281, 14.226531028747559), new StylusPoint(59.452213287353516, 16.40271759033203), new StylusPoint(60.107200622558594, 18.59457015991211), new StylusPoint(60.61478042602539, 20.824447631835938), new StylusPoint(61.0802001953125, 23.063547134399414), new StylusPoint(61.409523010253906, 25.327342987060547), new StylusPoint(61.6726188659668, 27.598546981811523), new StylusPoint(61.851627349853516, 29.87915802001953), new StylusPoint(61.93839645385742, 32.164546966552734), new StylusPoint(61.98704528808594, 34.45140838623047), new StylusPoint(61.91096496582031, 36.73776626586914), new StylusPoint(61.82494354248047, 39.02346420288086), new StylusPoint(61.59650802612305, 41.299652099609375), new StylusPoint(61.34341049194336, 43.57245635986328), new StylusPoint(60.95055389404297, 45.82609558105469), new StylusPoint(60.51007843017578, 48.06968688964844), new StylusPoint(59.958797454833984, 50.28989028930664), new StylusPoint(59.32914733886719, 52.4875602722168), new StylusPoint(58.6168212890625, 54.66145706176758), new StylusPoint(57.80571365356445, 56.799285888671875), new StylusPoint(56.94979476928711, 58.920753479003906), new StylusPoint(55.979488372802734, 60.99186706542969), new StylusPoint(54.9897346496582, 63.054195404052734), new StylusPoint(53.89733123779297, 65.06414031982422), new StylusPoint(53.251258850097656, 66.79974365234375), new StylusPoint(55.53789520263672, 66.73272705078125), new StylusPoint(57.82313537597656, 66.64049530029297), new StylusPoint(60.103023529052734, 66.45258331298828), new StylusPoint(62.38091278076172, 66.24584197998047), new StylusPoint(64.6490707397461, 65.94808197021484), new StylusPoint(66.91650390625, 65.64555358886719), new StylusPoint(69.16873931884766, 65.24476623535156), new StylusPoint(71.42097473144531, 64.8439712524414), new StylusPoint(73.65538024902344, 64.35492706298828), new StylusPoint(75.886474609375, 63.84951400756836), new StylusPoint(78.10358428955078, 63.28799057006836), new StylusPoint(80.31082916259766, 62.68693923950195), new StylusPoint(82.5093994140625, 62.056671142578125), new StylusPoint(84.6862564086914, 61.353477478027344), new StylusPoint(86.86312866210938, 60.65028762817383), new StylusPoint(89.00614929199219, 59.85011672973633), new StylusPoint(91.14791870117188, 59.04632568359375), new StylusPoint(93.2607192993164, 58.17122268676758), new StylusPoint(95.35662841796875, 57.25447463989258), new StylusPoint(97.4364013671875, 56.303401947021484), new StylusPoint(99.4801254272461, 55.27560043334961), new StylusPoint(101.52346801757812, 54.2470588684082), new StylusPoint(103.49996185302734, 53.09524917602539), new StylusPoint(105.47647094726562, 51.94343948364258), new StylusPoint(107.39350128173828, 50.69695281982422), new StylusPoint(109.28933715820312, 49.41669464111328), new StylusPoint(111.13130950927734, 48.06303405761719), new StylusPoint(112.9214859008789, 46.6387939453125), new StylusPoint(114.66999816894531, 45.16645050048828), new StylusPoint(116.334716796875, 43.597389221191406), new StylusPoint(117.96539306640625, 41.9956169128418), new StylusPoint(119.46685028076172, 40.26969528198242), new StylusPoint(120.94160461425781, 38.52294158935547), new StylusPoint(122.24894714355469, 36.64568328857422), new StylusPoint(123.26533508300781, 34.77312469482422), new StylusPoint(121.898193359375, 32.938961029052734), new StylusPoint(120.50439453125, 31.126815795898438), new StylusPoint(118.96137237548828, 29.43793487548828), new StylusPoint(117.40213012695312, 27.76522445678711), new StylusPoint(115.71947479248047, 26.215412139892578), new StylusPoint(114.03682708740234, 24.665597915649414), new StylusPoint(112.24278259277344, 23.246217727661133), new StylusPoint(110.44864654541016, 21.826974868774414), new StylusPoint(108.58206176757812, 20.505756378173828), new StylusPoint(106.69857788085938, 19.207399368286133), new StylusPoint(104.77436065673828, 17.972064971923828), new StylusPoint(102.81739807128906, 16.78736114501953), new StylusPoint(100.84515380859375, 15.629474639892578), new StylusPoint(98.82781982421875, 14.550780296325684), new StylusPoint(96.81048583984375, 13.472094535827637), new StylusPoint(94.74604797363281, 12.48708724975586), new StylusPoint(92.67694854736328, 11.511346817016602), new StylusPoint(90.5845718383789, 10.588017463684082), new StylusPoint(88.47332000732422, 9.707228660583496), new StylusPoint(86.35486602783203, 8.844873428344727), new StylusPoint(84.20448303222656, 8.06442642211914), new StylusPoint(82.0541000366211, 7.283978462219238), new StylusPoint(79.87622833251953, 6.585014343261719), new StylusPoint(77.69276428222656, 5.902576446533203), new StylusPoint(75.49462890625, 5.271134853363037), new StylusPoint(73.28227233886719, 4.689207077026367), new StylusPoint(71.06400299072266, 4.132011413574219), new StylusPoint(68.8269271850586, 3.653775691986084), new StylusPoint(66.589111328125, 3.1794748306274414), new StylusPoint(64.32994079589844, 2.819852113723755), new StylusPoint(62.07075500488281, 2.4602270126342773), new StylusPoint(59.7963752746582, 2.217003583908081), new StylusPoint(57.52058410644531, 1.9845824241638184), new StylusPoint(55.235443115234375, 1.8888481855392456) }),

						new Stroke(new StylusPointCollection() { new StylusPoint(44.42578125, 1.828125), new StylusPoint(44.750526428222656, 2.4293136596679688), new StylusPoint(45.07527160644531, 3.0305025577545166), new StylusPoint(45.40001678466797, 3.6316912174224854), new StylusPoint(45.72475814819336, 4.232880115509033), new StylusPoint(46.049503326416016, 4.834068775177002), new StylusPoint(46.37424850463867, 5.435257434844971), new StylusPoint(46.69899368286133, 6.0364460945129395), new StylusPoint(47.00849914550781, 6.645259380340576), new StylusPoint(47.294944763183594, 7.265611171722412), new StylusPoint(47.581390380859375, 7.885962963104248), new StylusPoint(47.867835998535156, 8.506314277648926), new StylusPoint(48.15428161621094, 9.126667022705078), new StylusPoint(48.44072723388672, 9.747017860412598), new StylusPoint(48.727169036865234, 10.367369651794434), new StylusPoint(48.99607467651367, 10.995095252990723), new StylusPoint(49.23889923095703, 11.633784294128418), new StylusPoint(49.481719970703125, 12.27247428894043), new StylusPoint(49.724544525146484, 12.911164283752441), new StylusPoint(49.96736526489258, 13.549853324890137), new StylusPoint(50.21018981933594, 14.188543319702148), new StylusPoint(50.45301055908203, 14.827231407165527), new StylusPoint(50.6524658203125, 15.480623245239258), new StylusPoint(50.848106384277344, 16.13530731201172), new StylusPoint(51.04374313354492, 16.789995193481445), new StylusPoint(51.2393798828125, 17.444679260253906), new StylusPoint(51.435020446777344, 18.099363327026367), new StylusPoint(51.63065719604492, 18.75404930114746), new StylusPoint(51.78568649291992, 19.419208526611328), new StylusPoint(51.93114471435547, 20.08683967590332), new StylusPoint(52.07659912109375, 20.75446891784668), new StylusPoint(52.2220573425293, 21.422100067138672), new StylusPoint(52.367515563964844, 22.0897274017334), new StylusPoint(52.51297378540039, 22.75735855102539), new StylusPoint(52.61219787597656, 23.43337631225586), new StylusPoint(52.7105598449707, 24.109548568725586), new StylusPoint(52.80892562866211, 24.785724639892578), new StylusPoint(52.907291412353516, 25.461896896362305), new StylusPoint(53.00565719604492, 26.138072967529297), new StylusPoint(53.09041976928711, 26.815767288208008), new StylusPoint(53.14388656616211, 27.496965408325195), new StylusPoint(53.19735336303711, 28.178159713745117), new StylusPoint(53.250823974609375, 28.859355926513672), new StylusPoint(53.304290771484375, 29.540552139282227), new StylusPoint(53.357757568359375, 30.22174835205078), new StylusPoint(53.38667678833008, 30.904216766357422), new StylusPoint(53.403907775878906, 31.587289810180664), new StylusPoint(53.421138763427734, 32.27036666870117), new StylusPoint(53.43836975097656, 32.95344161987305), new StylusPoint(53.455604553222656, 33.636512756347656), new StylusPoint(53.47241973876953, 34.319583892822266), new StylusPoint(53.4496955871582, 35.002498626708984), new StylusPoint(53.426971435546875, 35.68540954589844), new StylusPoint(53.40424728393555, 36.368324279785156), new StylusPoint(53.38151931762695, 37.051239013671875), new StylusPoint(53.358795166015625, 37.734153747558594), new StylusPoint(53.3360710144043, 38.41706466674805), new StylusPoint(53.29939651489258, 39.09904861450195), new StylusPoint(53.231163024902344, 39.77892303466797), new StylusPoint(53.162933349609375, 40.458797454833984), new StylusPoint(53.09469985961914, 41.138675689697266), new StylusPoint(53.02647018432617, 41.81855392456055), new StylusPoint(52.9582405090332, 42.49842834472656), new StylusPoint(52.89000701904297, 43.17830276489258), new StylusPoint(52.7778434753418, 43.85215377807617), new StylusPoint(52.66050338745117, 44.52529525756836), new StylusPoint(52.54315948486328, 45.19843673706055), new StylusPoint(52.425819396972656, 45.87157440185547), new StylusPoint(52.308475494384766, 46.544715881347656), new StylusPoint(52.191131591796875, 47.217857360839844), new StylusPoint(52.0405387878418, 47.883975982666016), new StylusPoint(51.875877380371094, 48.54713439941406), new StylusPoint(51.711212158203125, 49.210289001464844), new StylusPoint(51.54655075073242, 49.873443603515625), new StylusPoint(51.38188552856445, 50.53659439086914), new StylusPoint(51.21722412109375, 51.19974899291992), new StylusPoint(51.02190399169922, 51.85407257080078), new StylusPoint(50.80855178833008, 52.50320053100586), new StylusPoint(50.5952033996582, 53.15232849121094), new StylusPoint(50.38185119628906, 53.80146026611328), new StylusPoint(50.16850280761719, 54.45058822631836), new StylusPoint(49.95515060424805, 55.09971618652344), new StylusPoint(49.71630096435547, 55.73952865600586), new StylusPoint(49.46086883544922, 56.37328338623047), new StylusPoint(49.20543670654297, 57.00703048706055), new StylusPoint(48.950008392333984, 57.640785217285156), new StylusPoint(48.694576263427734, 58.2745361328125), new StylusPoint(48.439144134521484, 58.90829086303711), new StylusPoint(48.16273880004883, 59.532814025878906), new StylusPoint(47.86808395385742, 60.14930725097656), new StylusPoint(47.57343292236328, 60.765804290771484), new StylusPoint(47.278778076171875, 61.382301330566406), new StylusPoint(46.984127044677734, 61.99879455566406), new StylusPoint(46.68947219848633, 62.615291595458984), new StylusPoint(46.38352584838867, 63.22602462768555), new StylusPoint(46.05723571777344, 63.82637405395508), new StylusPoint(45.73094177246094, 64.42672729492188), new StylusPoint(45.4046516418457, 65.0270767211914), new StylusPoint(45.07836151123047, 65.62742614746094), new StylusPoint(44.75206756591797, 66.227783203125) })
					};

					return sc;
				}
			}

			/// <summary>
			/// Gets the ANSI XNOR.
			/// </summary>
			/// <value>The ANSI XNOR.</value>
			public static StrokeCollection XNOR
			{
				get
				{
					var sc = new StrokeCollection()
					{
						// in1
						new Stroke(new StylusPointCollection() { new StylusPoint(52.37890625, 16.62109375), new StylusPoint(2.2890625, 16.62109375) }),
	
						// in2
						new Stroke(new StylusPointCollection() { new StylusPoint(52.37890625, 50.94140625), new StylusPoint(2.2890625, 50.94140625) }),
	
						//
						new Stroke(new StylusPointCollection() { new StylusPoint(183.54296875, 34.359375), new StylusPoint(183.0420684814453, 34.359375), new StylusPoint(182.54116821289062, 34.359375), new StylusPoint(182.04026794433594, 34.359375), new StylusPoint(181.53936767578125, 34.359375), new StylusPoint(181.03848266601562, 34.359375), new StylusPoint(180.53758239746094, 34.359375), new StylusPoint(180.03668212890625, 34.359375), new StylusPoint(179.53578186035156, 34.359375), new StylusPoint(179.03488159179688, 34.359375), new StylusPoint(178.5339813232422, 34.359375), new StylusPoint(178.0330810546875, 34.359375), new StylusPoint(177.5321807861328, 34.359375), new StylusPoint(177.0312957763672, 34.359375), new StylusPoint(176.5303955078125, 34.359375), new StylusPoint(176.0294952392578, 34.359375), new StylusPoint(175.52859497070312, 34.359375), new StylusPoint(175.02769470214844, 34.359375), new StylusPoint(174.52679443359375, 34.359375), new StylusPoint(174.02589416503906, 34.359375), new StylusPoint(173.52499389648438, 34.359375), new StylusPoint(173.02410888671875, 34.359375), new StylusPoint(172.52320861816406, 34.359375), new StylusPoint(172.02230834960938, 34.359375), new StylusPoint(171.5214080810547, 34.359375), new StylusPoint(171.0205078125, 34.359375), new StylusPoint(170.5196075439453, 34.359375), new StylusPoint(170.01870727539062, 34.359375), new StylusPoint(169.51780700683594, 34.359375), new StylusPoint(169.01690673828125, 34.359375), new StylusPoint(168.51602172851562, 34.359375), new StylusPoint(168.01512145996094, 34.359375), new StylusPoint(167.51422119140625, 34.359375), new StylusPoint(167.01332092285156, 34.359375), new StylusPoint(166.51242065429688, 34.359375), new StylusPoint(166.0115203857422, 34.359375), new StylusPoint(165.5106201171875, 34.359375), new StylusPoint(165.00973510742188, 34.359375), new StylusPoint(164.50881958007812, 34.359375), new StylusPoint(164.0079345703125, 34.359375), new StylusPoint(163.5070343017578, 34.359375), new StylusPoint(163.00613403320312, 34.359375), new StylusPoint(162.50523376464844, 34.359375), new StylusPoint(162.00433349609375, 34.359375), new StylusPoint(161.50343322753906, 34.359375), new StylusPoint(161.00253295898438, 34.359375), new StylusPoint(160.50164794921875, 34.359375), new StylusPoint(160.00074768066406, 34.359375), new StylusPoint(159.49984741210938, 34.359375), new StylusPoint(158.9989471435547, 34.359375), new StylusPoint(158.498046875, 34.359375), new StylusPoint(157.9971466064453, 34.359375), new StylusPoint(157.49624633789062, 34.359375), new StylusPoint(156.99534606933594, 34.359375), new StylusPoint(156.49444580078125, 34.359375), new StylusPoint(155.99356079101562, 34.359375), new StylusPoint(155.49266052246094, 34.359375), new StylusPoint(154.99176025390625, 34.359375), new StylusPoint(154.49085998535156, 34.359375), new StylusPoint(153.98995971679688, 34.359375), new StylusPoint(153.4890594482422, 34.359375), new StylusPoint(152.9881591796875, 34.359375), new StylusPoint(152.48727416992188, 34.359375), new StylusPoint(151.98635864257812, 34.359375), new StylusPoint(151.4854736328125, 34.359375), new StylusPoint(150.9845733642578, 34.359375), new StylusPoint(150.48367309570312, 34.359375), new StylusPoint(149.98277282714844, 34.359375), new StylusPoint(149.48187255859375, 34.359375), new StylusPoint(148.98097229003906, 34.359375), new StylusPoint(148.48007202148438, 34.359375), new StylusPoint(147.97918701171875, 34.359375), new StylusPoint(147.47828674316406, 34.359375), new StylusPoint(146.97738647460938, 34.359375), new StylusPoint(146.4764862060547, 34.359375), new StylusPoint(145.9755859375, 34.359375), new StylusPoint(145.4746856689453, 34.359375), new StylusPoint(144.97378540039062, 34.359375), new StylusPoint(144.47288513183594, 34.359375), new StylusPoint(143.97198486328125, 34.359375), new StylusPoint(143.47109985351562, 34.359375), new StylusPoint(142.97019958496094, 34.359375), new StylusPoint(142.46929931640625, 34.359375), new StylusPoint(141.96839904785156, 34.359375), new StylusPoint(141.46749877929688, 34.359375), new StylusPoint(140.9665985107422, 34.359375), new StylusPoint(140.4656982421875, 34.359375), new StylusPoint(139.96481323242188, 34.359375), new StylusPoint(139.46389770507812, 34.359375), new StylusPoint(138.9630126953125, 34.359375), new StylusPoint(138.4621124267578, 34.359375), new StylusPoint(137.96121215820312, 34.359375), new StylusPoint(137.46031188964844, 34.359375), new StylusPoint(136.95941162109375, 34.359375), new StylusPoint(136.45851135253906, 34.359375), new StylusPoint(135.95761108398438, 34.359375), new StylusPoint(135.45672607421875, 34.359375), new StylusPoint(134.95582580566406, 34.359375), new StylusPoint(134.45492553710938, 34.359375), new StylusPoint(133.9540252685547, 34.359375), new StylusPoint(133.453125, 34.359375) }),
	
						//
						new Stroke(new StylusPointCollection() { new StylusPoint(53.9765625, 1.34375), new StylusPoint(55.06379699707031, 3.3565073013305664), new StylusPoint(56.15102767944336, 5.369264602661133), new StylusPoint(57.144744873046875, 7.428813457489014), new StylusPoint(58.1037483215332, 9.505727767944336), new StylusPoint(58.96819305419922, 11.62234878540039), new StylusPoint(59.77939224243164, 13.761326789855957), new StylusPoint(60.48062515258789, 15.937532424926758), new StylusPoint(61.13561248779297, 18.12939453125), new StylusPoint(61.642921447753906, 20.359350204467773), new StylusPoint(62.10808563232422, 22.598508834838867), new StylusPoint(62.437408447265625, 24.862314224243164), new StylusPoint(62.70025634765625, 27.133556365966797), new StylusPoint(62.87926483154297, 29.414173126220703), new StylusPoint(62.96583557128906, 31.699583053588867), new StylusPoint(63.01426315307617, 33.986454010009766), new StylusPoint(62.93817901611328, 36.27281951904297), new StylusPoint(62.85204315185547, 38.55852127075195), new StylusPoint(62.62562561035156, 40.834922790527344), new StylusPoint(62.373931884765625, 43.10786819458008), new StylusPoint(61.981075286865234, 45.36151885986328), new StylusPoint(61.540306091308594, 47.60505294799805), new StylusPoint(60.98902130126953, 49.82527160644531), new StylusPoint(60.35811233520508, 52.02254867553711), new StylusPoint(59.643821716308594, 54.19580841064453), new StylusPoint(58.83242416381836, 56.33358383178711), new StylusPoint(57.97725296020508, 58.455360412597656), new StylusPoint(57.00706481933594, 60.52653884887695), new StylusPoint(56.017333984375, 62.58888626098633), new StylusPoint(54.924922943115234, 64.59883880615234), new StylusPoint(54.27809143066406, 66.33491516113281), new StylusPoint(56.56473922729492, 66.26789855957031), new StylusPoint(58.8499870300293, 66.17569732666016), new StylusPoint(61.12989044189453, 65.98777770996094), new StylusPoint(63.407779693603516, 65.78105926513672), new StylusPoint(65.67595672607422, 65.48329162597656), new StylusPoint(67.94339752197266, 65.18079376220703), new StylusPoint(70.19564819335938, 64.77999877929688), new StylusPoint(72.44789123535156, 64.37920379638672), new StylusPoint(74.68231201171875, 63.89017868041992), new StylusPoint(76.91342163085938, 63.384761810302734), new StylusPoint(79.13053894042969, 62.82324981689453), new StylusPoint(81.3377914428711, 62.222198486328125), new StylusPoint(83.53636932373047, 61.59194564819336), new StylusPoint(85.71324920654297, 60.88874816894531), new StylusPoint(87.89012145996094, 60.1855583190918), new StylusPoint(90.03315734863281, 59.385398864746094), new StylusPoint(92.17493438720703, 58.58160400390625), new StylusPoint(94.28775787353516, 57.706512451171875), new StylusPoint(96.3836669921875, 56.789764404296875), new StylusPoint(98.46345520019531, 55.83870315551758), new StylusPoint(100.5072021484375, 54.81089401245117), new StylusPoint(102.55054473876953, 53.78236770629883), new StylusPoint(104.52706146240234, 52.630550384521484), new StylusPoint(106.50357055664062, 51.478736877441406), new StylusPoint(108.4206314086914, 50.23225784301758), new StylusPoint(110.31645965576172, 48.95199966430664), new StylusPoint(112.15846252441406, 47.59834671020508), new StylusPoint(113.94863891601562, 46.174095153808594), new StylusPoint(115.69717407226562, 44.7017707824707), new StylusPoint(117.36190032958984, 43.132694244384766), new StylusPoint(118.99259185791016, 41.53093719482422), new StylusPoint(120.49406433105469, 39.80500793457031), new StylusPoint(121.96884155273438, 38.05825424194336), new StylusPoint(123.27618408203125, 36.18099594116211), new StylusPoint(124.29278564453125, 34.30842208862305), new StylusPoint(122.9256362915039, 32.4742431640625), new StylusPoint(121.53184509277344, 30.66208839416504), new StylusPoint(119.98882293701172, 28.973207473754883), new StylusPoint(118.42957305908203, 27.300466537475586), new StylusPoint(116.74691772460938, 25.750654220581055), new StylusPoint(115.06424713134766, 24.200830459594727), new StylusPoint(113.27021789550781, 22.781444549560547), new StylusPoint(111.47606658935547, 21.362192153930664), new StylusPoint(109.6094741821289, 20.04096031188965), new StylusPoint(107.72599029541016, 18.742603302001953), new StylusPoint(105.80176544189453, 17.50725555419922), new StylusPoint(103.84478759765625, 16.32254409790039), new StylusPoint(101.87254333496094, 15.164654731750488), new StylusPoint(99.8552017211914, 14.08596134185791), new StylusPoint(97.83785247802734, 13.0072603225708), new StylusPoint(95.7734146118164, 12.022252082824707), new StylusPoint(93.70429992675781, 11.046504974365234), new StylusPoint(91.61192321777344, 10.123175621032715), new StylusPoint(89.50065612792969, 9.242382049560547), new StylusPoint(87.38218688964844, 8.380022048950195), new StylusPoint(85.23180389404297, 7.599574089050293), new StylusPoint(83.0814208984375, 6.819126605987549), new StylusPoint(80.90364837646484, 6.119755744934082), new StylusPoint(78.72032928466797, 5.4368391036987305), new StylusPoint(76.52222442626953, 4.805328845977783), new StylusPoint(74.3098373413086, 4.223392963409424), new StylusPoint(72.09152221679688, 3.666370391845703), new StylusPoint(69.85444641113281, 3.1881346702575684), new StylusPoint(67.6165771484375, 2.71402907371521), new StylusPoint(65.35739135742188, 2.3544039726257324), new StylusPoint(63.09819412231445, 1.9947763681411743), new StylusPoint(60.823768615722656, 1.7519469261169434), new StylusPoint(58.54795837402344, 1.5197213888168335), new StylusPoint(56.262779235839844, 1.424004316329956), new StylusPoint(53.9765625, 1.34375) }),
	
						//
						new Stroke(new StylusPointCollection() { new StylusPoint(45.45703125, 1.359375), new StylusPoint(45.78176498413086, 1.960540771484375), new StylusPoint(46.10649490356445, 2.56170654296875), new StylusPoint(46.43122863769531, 3.162872314453125), new StylusPoint(46.755958557128906, 3.7640380859375), new StylusPoint(47.080692291259766, 4.365203857421875), new StylusPoint(47.405426025390625, 4.96636962890625), new StylusPoint(47.73015594482422, 5.567535400390625), new StylusPoint(48.0396614074707, 6.176319599151611), new StylusPoint(48.32609558105469, 6.796648025512695), new StylusPoint(48.61252975463867, 7.416975975036621), new StylusPoint(48.898963928222656, 8.037303924560547), new StylusPoint(49.18539810180664, 8.657631874084473), new StylusPoint(49.471832275390625, 9.277960777282715), new StylusPoint(49.75826644897461, 9.898287773132324), new StylusPoint(50.026973724365234, 10.526060104370117), new StylusPoint(50.26926040649414, 11.164924621582031), new StylusPoint(50.51154708862305, 11.803790092468262), new StylusPoint(50.75383377075195, 12.442654609680176), new StylusPoint(50.99612045288086, 13.081520080566406), new StylusPoint(51.238407135009766, 13.72038459777832), new StylusPoint(51.48069381713867, 14.35925006866455), new StylusPoint(51.6800422668457, 15.012651443481445), new StylusPoint(51.875675201416016, 15.667311668395996), new StylusPoint(52.07130432128906, 16.321971893310547), new StylusPoint(52.26693344116211, 16.976633071899414), new StylusPoint(52.46256637573242, 17.63129234313965), new StylusPoint(52.65819549560547, 18.285953521728516), new StylusPoint(52.813167572021484, 18.951101303100586), new StylusPoint(52.958621978759766, 19.61870574951172), new StylusPoint(53.10407257080078, 20.28631019592285), new StylusPoint(53.2495231628418, 20.953914642333984), new StylusPoint(53.39497756958008, 21.621517181396484), new StylusPoint(53.540428161621094, 22.289121627807617), new StylusPoint(53.639610290527344, 22.965120315551758), new StylusPoint(53.737972259521484, 23.64126968383789), new StylusPoint(53.836334228515625, 24.317415237426758), new StylusPoint(53.934696197509766, 24.99356460571289), new StylusPoint(54.033058166503906, 25.669713973999023), new StylusPoint(54.11779022216797, 26.34738540649414), new StylusPoint(54.17125701904297, 27.028554916381836), new StylusPoint(54.22472381591797, 27.709726333618164), new StylusPoint(54.27819061279297, 28.39089584350586), new StylusPoint(54.3316535949707, 29.072067260742188), new StylusPoint(54.3851203918457, 29.75323486328125), new StylusPoint(54.414024353027344, 30.435678482055664), new StylusPoint(54.43125534057617, 31.11872673034668), new StylusPoint(54.448486328125, 31.801773071289062), new StylusPoint(54.46571731567383, 32.48482131958008), new StylusPoint(54.482948303222656, 33.167869567871094), new StylusPoint(54.499759674072266, 33.85091781616211), new StylusPoint(54.47703552246094, 34.53380584716797), new StylusPoint(54.454315185546875, 35.21669387817383), new StylusPoint(54.43159103393555, 35.89958190917969), new StylusPoint(54.40886688232422, 36.58246994018555), new StylusPoint(54.38614273071289, 37.265350341796875), new StylusPoint(54.36341857910156, 37.948238372802734), new StylusPoint(54.32674789428711, 38.63019561767578), new StylusPoint(54.258522033691406, 39.3100471496582), new StylusPoint(54.19029235839844, 39.989898681640625), new StylusPoint(54.12206268310547, 40.66975021362305), new StylusPoint(54.0538330078125, 41.3495979309082), new StylusPoint(53.9856071472168, 42.029449462890625), new StylusPoint(53.91737747192383, 42.70929718017578), new StylusPoint(53.80523681640625, 43.38312530517578), new StylusPoint(53.68790054321289, 44.05624008178711), new StylusPoint(53.570560455322266, 44.72935485839844), new StylusPoint(53.453224182128906, 45.402469635009766), new StylusPoint(53.33588790893555, 46.075584411621094), new StylusPoint(53.21854782104492, 46.74869918823242), new StylusPoint(53.067989349365234, 47.41480255126953), new StylusPoint(52.9033317565918, 48.07793045043945), new StylusPoint(52.73867416381836, 48.741058349609375), new StylusPoint(52.57402038574219, 49.4041862487793), new StylusPoint(52.40936279296875, 50.067317962646484), new StylusPoint(52.24470520019531, 50.730445861816406), new StylusPoint(52.049800872802734, 51.3848762512207), new StylusPoint(51.83704376220703, 52.03417205810547), new StylusPoint(51.62428665161133, 52.6834716796875), new StylusPoint(51.411529541015625, 53.332767486572266), new StylusPoint(51.19877624511719, 53.982059478759766), new StylusPoint(50.986019134521484, 54.6313591003418), new StylusPoint(50.74737548828125, 55.271209716796875), new StylusPoint(50.4919548034668, 55.904937744140625), new StylusPoint(50.236534118652344, 56.538665771484375), new StylusPoint(49.98111343383789, 57.172393798828125), new StylusPoint(49.72568893432617, 57.806121826171875), new StylusPoint(49.47026824951172, 58.43985366821289), new StylusPoint(49.19385528564453, 59.06433868408203), new StylusPoint(48.89921569824219, 59.68081283569336), new StylusPoint(48.60457229614258, 60.29728317260742), new StylusPoint(48.30992889404297, 60.91375732421875), new StylusPoint(48.015289306640625, 61.53022766113281), new StylusPoint(47.720645904541016, 62.14670181274414), new StylusPoint(47.414703369140625, 62.75740432739258), new StylusPoint(47.08842468261719, 63.357730865478516), new StylusPoint(46.76214599609375, 63.95806121826172), new StylusPoint(46.43586730957031, 64.55838775634766), new StylusPoint(46.109588623046875, 65.1587142944336), new StylusPoint(45.78330993652344, 65.75904846191406) }),
	
						//
						new Stroke(new StylusPointCollection() { new StylusPoint(133.85546875, 34.3046875), new StylusPoint(133.8188018798828, 34.58515167236328), new StylusPoint(133.7821502685547, 34.86561965942383), new StylusPoint(133.7454833984375, 35.14608383178711), new StylusPoint(133.7088165283203, 35.426551818847656), new StylusPoint(133.62216186523438, 35.694034576416016), new StylusPoint(133.5177459716797, 35.956912994384766), new StylusPoint(133.41334533691406, 36.21978759765625), new StylusPoint(133.30894470214844, 36.482666015625), new StylusPoint(133.16958618164062, 36.72611618041992), new StylusPoint(133.0013885498047, 36.95351791381836), new StylusPoint(132.8331756591797, 37.18092346191406), new StylusPoint(132.66497802734375, 37.408329010009766), new StylusPoint(132.47654724121094, 37.616363525390625), new StylusPoint(132.25660705566406, 37.79419708251953), new StylusPoint(132.03665161132812, 37.9720344543457), new StylusPoint(131.8166961669922, 38.14986801147461), new StylusPoint(131.58792114257812, 38.3129768371582), new StylusPoint(131.3273468017578, 38.42303466796875), new StylusPoint(131.06678771972656, 38.53308868408203), new StylusPoint(130.8062286376953, 38.64314651489258), new StylusPoint(130.54440307617188, 38.74858093261719), new StylusPoint(130.26417541503906, 38.78710174560547), new StylusPoint(129.9839630126953, 38.825618743896484), new StylusPoint(129.70375061035156, 38.8641357421875), new StylusPoint(129.42352294921875, 38.902034759521484), new StylusPoint(129.143310546875, 38.86351776123047), new StylusPoint(128.86309814453125, 38.82499694824219), new StylusPoint(128.58287048339844, 38.78647994995117), new StylusPoint(128.3026580810547, 38.747962951660156), new StylusPoint(128.04141235351562, 38.64073181152344), new StylusPoint(127.78114318847656, 38.529998779296875), new StylusPoint(127.52086639404297, 38.41926193237305), new StylusPoint(127.2605972290039, 38.308528900146484), new StylusPoint(127.03264617919922, 38.143611907958984), new StylusPoint(126.81159973144531, 37.96714401245117), new StylusPoint(126.59054565429688, 37.790672302246094), new StylusPoint(126.36949157714844, 37.61420440673828), new StylusPoint(126.18150329589844, 37.40595626831055), new StylusPoint(126.01390838623047, 37.178104400634766), new StylusPoint(125.8463134765625, 36.95024871826172), new StylusPoint(125.67871856689453, 36.72239685058594), new StylusPoint(125.5404281616211, 36.478240966796875), new StylusPoint(125.43521881103516, 36.2156867980957), new StylusPoint(125.33000946044922, 35.953128814697266), new StylusPoint(125.22480010986328, 35.69057083129883), new StylusPoint(125.13912963867188, 35.423011779785156), new StylusPoint(125.10517120361328, 35.14220428466797), new StylusPoint(125.07122039794922, 34.86139678955078), new StylusPoint(125.03726959228516, 34.58059310913086), new StylusPoint(125.0044937133789, 34.29978561401367), new StylusPoint(125.0382308959961, 34.018951416015625), new StylusPoint(125.07196807861328, 33.738121032714844), new StylusPoint(125.10570526123047, 33.4572868347168), new StylusPoint(125.13944244384766, 33.17645263671875), new StylusPoint(125.22582244873047, 32.90911865234375), new StylusPoint(125.33135986328125, 32.646690368652344), new StylusPoint(125.4368896484375, 32.38426208496094), new StylusPoint(125.54241943359375, 32.12183380126953), new StylusPoint(125.68187713623047, 31.878263473510742), new StylusPoint(125.8490219116211, 31.650081634521484), new StylusPoint(126.01617431640625, 31.421897888183594), new StylusPoint(126.18331909179688, 31.193714141845703), new StylusPoint(126.37187957763672, 30.98618507385254), new StylusPoint(126.59383392333984, 30.810855865478516), new StylusPoint(126.8157958984375, 30.635528564453125), new StylusPoint(127.03775024414062, 30.4601993560791), new StylusPoint(127.26731872558594, 30.297605514526367), new StylusPoint(127.52690887451172, 30.185274124145508), new StylusPoint(127.7864990234375, 30.07294273376465), new StylusPoint(128.04608154296875, 29.96061134338379), new StylusPoint(128.3070068359375, 29.853063583374023), new StylusPoint(128.5873565673828, 29.815492630004883), new StylusPoint(128.86769104003906, 29.77791976928711), new StylusPoint(129.14804077148438, 29.74034881591797), new StylusPoint(129.4283905029297, 29.703474044799805), new StylusPoint(129.70872497558594, 29.741046905517578), new StylusPoint(129.98907470703125, 29.77861785888672), new StylusPoint(130.26942443847656, 29.816190719604492), new StylusPoint(130.5497589111328, 29.853761672973633), new StylusPoint(130.81057739257812, 29.96204376220703), new StylusPoint(131.07046508789062, 30.073692321777344), new StylusPoint(131.33035278320312, 30.185338973999023), new StylusPoint(131.59022521972656, 30.296985626220703), new StylusPoint(131.8192596435547, 30.46009063720703), new StylusPoint(132.04013061523438, 30.63678741455078), new StylusPoint(132.26100158691406, 30.81348419189453), new StylusPoint(132.48187255859375, 30.99018096923828), new StylusPoint(132.66900634765625, 31.199281692504883), new StylusPoint(132.83676147460938, 31.427017211914062), new StylusPoint(133.0045166015625, 31.654752731323242), new StylusPoint(133.17227172851562, 31.88248634338379), new StylusPoint(133.31060791015625, 32.12656784057617), new StylusPoint(133.4153289794922, 32.38931655883789), new StylusPoint(133.5200653076172, 32.652069091796875), new StylusPoint(133.62478637695312, 32.914817810058594), new StylusPoint(133.7097625732422, 33.182701110839844), new StylusPoint(133.74618530273438, 33.463199615478516), new StylusPoint(133.78260803222656, 33.74369430541992), new StylusPoint(133.8190460205078, 34.02418899536133) })
					};

					return sc;
				}
			}

			/// <summary>
			/// Gets the ANSI D Flip-flop.
			/// </summary>
			/// <value>The ANSI D Flip-flop.</value>
			public static StrokeCollection DFlipFlop
			{
				get
				{
					var sc = new StrokeCollection()
					{
						// in1
						new Stroke(new StylusPointCollection() { new StylusPoint(0, 25), new StylusPoint(50, 25) }),

						// in2
						new Stroke(new StylusPointCollection() { new StylusPoint(0, 75), new StylusPoint(50, 75) }),
						
						// out1
						new Stroke(new StylusPointCollection() { new StylusPoint(110, 25), new StylusPoint(160, 25) }),

						// out2
						new Stroke(new StylusPointCollection() { new StylusPoint(110, 75), new StylusPoint(160, 75) }),	
						
						// gate
						new Stroke(new StylusPointCollection() { new StylusPoint(50, 100), new StylusPoint(50, 0), new StylusPoint(110, 0), new StylusPoint(110, 100), new StylusPoint(50, 100) }),
						
						// triangel
						new Stroke(new StylusPointCollection() { new StylusPoint(50, 60), new StylusPoint(65, 75), new StylusPoint(50, 90) }),
						
						// D
						new Stroke(new StylusPointCollection() { new StylusPoint(56.5329, 14.676), new StylusPoint(56.5336, 30.4055), new StylusPoint(56.5337, 32.1734), new StylusPoint(56.5337, 32.7627), new StylusPoint(56.6376, 33.2497), new StylusPoint(57.2269, 33.259), new StylusPoint(57.8161, 33.2677), new StylusPoint(58.4053, 33.2729), new StylusPoint(58.9946, 33.274), new StylusPoint(59.5839, 33.2696), new StylusPoint(60.1731, 33.2584), new StylusPoint(60.762, 33.2385), new StylusPoint(61.3505, 33.2083), new StylusPoint(61.9382, 33.1657), new StylusPoint(62.5247, 33.1086), new StylusPoint(63.1092, 33.0343), new StylusPoint(63.6908, 32.9393), new StylusPoint(64.2678, 32.8202), new StylusPoint(64.8385, 32.6738), new StylusPoint(65.3997, 32.4942), new StylusPoint(65.9472, 32.2767), new StylusPoint(66.4756, 32.0163), new StylusPoint(66.9774, 31.7079), new StylusPoint(67.4443, 31.3489), new StylusPoint(67.8668, 30.9386), new StylusPoint(68.2364, 30.4802), new StylusPoint(68.5481, 29.9805), new StylusPoint(68.7997, 29.448), new StylusPoint(68.9931, 28.8917), new StylusPoint(69.1332, 28.3195), new StylusPoint(69.2253, 27.7376), new StylusPoint(69.2757, 27.1507), new StylusPoint(69.2901, 26.5616), new StylusPoint(69.2882, 25.9724), new StylusPoint(69.2863, 25.3831), new StylusPoint(69.2819, 24.7938), new StylusPoint(69.2758, 24.2045), new StylusPoint(69.2676, 23.6153), new StylusPoint(69.2594, 23.0261), new StylusPoint(69.2521, 22.4368), new StylusPoint(69.2468, 21.8476), new StylusPoint(69.2439, 21.2583), new StylusPoint(69.2419, 20.669), new StylusPoint(69.2412, 20.0797), new StylusPoint(69.2403, 19.4904), new StylusPoint(69.2147, 18.9019), new StylusPoint(69.1317, 18.3188), new StylusPoint(68.9792, 17.7501), new StylusPoint(68.747, 17.2092), new StylusPoint(68.4304, 16.7131), new StylusPoint(68.0345, 16.2776), new StylusPoint(67.5741, 15.9107), new StylusPoint(67.0667, 15.6119), new StylusPoint(66.528, 15.3736), new StylusPoint(65.9695, 15.1861), new StylusPoint(65.3987, 15.0404), new StylusPoint(64.8203, 14.9281), new StylusPoint(64.2374, 14.8424), new StylusPoint(63.6516, 14.7786), new StylusPoint(63.0642, 14.7318), new StylusPoint(62.4758, 14.6989), new StylusPoint(61.8869, 14.6776), new StylusPoint(61.2978, 14.6647), new StylusPoint(60.7085, 14.6584), new StylusPoint(60.1193, 14.6573), new StylusPoint(59.53, 14.6601), new StylusPoint(58.9407, 14.6634), new StylusPoint(58.3514, 14.6685), new StylusPoint(57.7622, 14.6733), new StylusPoint(57.1729, 14.676) })
					};

					return sc;
				}
			}

			/// <summary>
			/// Gets the ANSI two bit Multiplexer.
			/// </summary>
			/// <value>The ANSI two bit Multiplexer.</value>
			public static StrokeCollection Mux2
			{
				get
				{
					var sc = new StrokeCollection()
					{
						// in1
						new Stroke(new StylusPointCollection() { new StylusPoint(0, 25), new StylusPoint(50, 25) }),

						// in2
						new Stroke(new StylusPointCollection() { new StylusPoint(0, 75), new StylusPoint(50, 75) }),

						// in3
						new Stroke(new StylusPointCollection() { new StylusPoint(75, 150 - 15/2), new StylusPoint(75, 100 - 15/2) }),
						
						// out1
						new Stroke(new StylusPointCollection() { new StylusPoint(100, 50), new StylusPoint(150, 50) }),
						
						// gate
						new Stroke(new StylusPointCollection() { new StylusPoint(50, 0), new StylusPoint(50, 100), new StylusPoint(100, 85), new StylusPoint(100, 15), new StylusPoint(50, 0) })
					};

					return sc;
				}
			}
			#endregion
		}

		//class IEC
		#endregion
	}
}
